使用以下命令:gcc -c -Wall -Wextra -pedantic -ansi -std=c99 -fstack-protector-all -fstack-check -O3 root.c -o rootTESTOBJECT 我收到了编译器警告 root.h:76:22: ...
我有一个复杂的switch语句,并且我忘记在其中一个case结尾处放置了break语句。这是完全合法的,结果导致我向下执行到下一个case。 是否有任何方法可以让gcc警告(或者更好的是,失败),如果我忽略了放置break语句? 我意识到有很多有效的用例(我经常在我的代码中使用它们),就像...
我刚刚在GCC中看到了以下的警告:warning: implicit dereference will not access object of type ‘volatile util::Yield’ in statement [enabled by default] 在编译这段代码时:vol...
我知道在C语言中枚举类型不区分也是有效的,但GCC有-Wenum-compare选项(我正在使用),并且按预期工作。我尝试了使用-Wconversion选项,但没有任何区别。为什么赋值和算术运算符(+ / - /&/ |等)也会产生警告?(赋值,或等等){ enum Foo f = S...
我对这个没有任何警告就编译通过感到惊讶: int main() { *"abc" = '\0'; } 使用 gcc main.c -Wall -Wextra 和 clang main.c -Weverything 命令时,为什么没有任何警告?这段代码有可能不会导致分段错误吗?
当我使用GCC 4.9.2编译以下程序时,出现以下警告:传递给‘P’的第1个参数类型不兼容。然而,我没有发现程序有任何错误。有什么线索吗? typedef int Row[10]; void P(const Row A[]) { } int main(void) { Row A...
下面的代码通过一些比特操作执行快速反平方根运算。该算法可能是由Silicon Graphics在1990年代初开发的,它也出现在Quake 3中。更多信息 然而,我从GCC C++编译器得到以下警告:解引用类型转换后的指针将会违反严格别名规则。 在这种情况下,我应该使用static_cas...
我使用 -Wall -pedantic 让 gcc 编译了以下示例:#include <stdio.h> int main(void) { printf("main: %p\n", main); /* line 5 */ printf("main: %p\n", (voi...
我从《C Primer Plus》中了解到,如果你想保护一个数组不被函数意外修改,应该在函数定义的头部,在指针声明之前添加const修饰符。 按照这个明智的建议,在下面这个最小的示例中,我试图将非常量二维数组array传递给函数Sum2D,其中一个参数是pointer-to-const-int...
我刚刚决定将尽可能多的变量从unsigned更改为int,在重新编译相关代码后,收到了以下警告消息:freespace_state.c:203: warning: assuming that the loop is not infinite 需要翻译的内容:这行代码:for (x = star...