我最近学会了如何编写简单的字符驱动程序,在玩这些代码的过程中,我注意到我的C99代码中出现了很多以下的GCC警告:
warning: ISO C90 forbids mixed declarations and code
我假设这是因为主Linux内核Makefile设置为使用非C99标准进行编译.我在附近搜索,我发现这个答案在stackoverflow:How to use make and compile as C99?
所以我自然在我的Makefile中尝试了以下内容:
ccflags-y := -std=gnu99
不幸的是,这并没有使GCC警告无声.我查看了make的详细输出并验证了GCC确实是在最后添加-std = gnu99的情况下执行的;所以我有点困惑.
如何使用-std = gnu99选项正确编译Linux内核模块?
编辑:
我注意到GCC输出显示了这个选项:-Wdeclaration-after-statement.这是为什么即使使用-std = gnu99选项我也会收到警告?