GCC 4.5:为什么在无效声明中没有编译器警告?

时间:2013-06-26 20:20:32

标签: gcc compiler-errors compiler-warnings

我使用gcc 4.5编译Linux内核模块。我只是注意到我有一些看起来像这样的代码:

#define NODE_ID      "string_here"

int foot(int a) {
    /* snip */
    NODE_ID;
    NODE_ID;
    /* snip */
    return 0;
}

我有这两个无效的语句,编译器从不会生成警告告诉我它们。为什么是这样?我想知道在我的项目中是否有其他类似的陈述,我还没有找到。

1 个答案:

答案 0 :(得分:0)

它警告你,你只是没有听 - 正如@Mat在评论中所说,你需要启用-Wall option,它会警告你:

$ gcc test.c -c -Wall
test.c: In function ‘foot’:
test.c:5:5: warning: statement with no effect
test.c:6:5: warning: statement with no effect

或者,您可以只为此警告启用-Wunused-value选项,但我强烈建议您使用-Wall,其中包含此警告和许多其他有用的警告。您还可以启用-Wextra-pedantic以获得更多,但这些有时会为代码提供误报,这对您的构建过程添加额外的噪音非常好。所以明智地使用它们。