我最近学习了如何编写简单的字符驱动程序,并且在玩弄代码时我注意到我收到很多针对我的 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
这就是为什么即使使用该选项我也会收到警告?