13得票1回答
GCC警告:ISO C不允许使用命名可变参数宏

使用以下命令:gcc -c -Wall -Wextra -pedantic -ansi -std=c99 -fstack-protector-all -fstack-check -O3 root.c -o rootTESTOBJECT 我收到了编译器警告 root.h:76:22: ...

10得票6回答
如何告诉gcc在switch/case语句中没有break时发出警告(或失败)?

我有一个复杂的switch语句,并且我忘记在其中一个case结尾处放置了break语句。这是完全合法的,结果导致我向下执行到下一个case。 是否有任何方法可以让gcc警告(或者更好的是,失败),如果我忽略了放置break语句? 我意识到有很多有效的用例(我经常在我的代码中使用它们),就像...

12得票1回答
GCC警告隐式解除引用。

我刚刚在GCC中看到了以下的警告:warning: implicit dereference will not access object of type ‘volatile util::Yield’ in statement [enabled by default] 在编译这段代码时:vol...

16得票1回答
如何在GCC中分配或执行不同枚举类型的算术运算时发出警告?

我知道在C语言中枚举类型不区分也是有效的,但GCC有-Wenum-compare选项(我正在使用),并且按预期工作。我尝试了使用-Wconversion选项,但没有任何区别。为什么赋值和算术运算符(+ / - /&/ |等)也会产生警告?(赋值,或等等){ enum Foo f = S...

7得票1回答
明显的segmentation fault没有编译器警告

我对这个没有任何警告就编译通过感到惊讶: int main() { *"abc" = '\0'; } 使用 gcc main.c -Wall -Wextra 和 clang main.c -Weverything 命令时,为什么没有任何警告?这段代码有可能不会导致分段错误吗?

7得票1回答
GCC发出不兼容指针类型的警告

当我使用GCC 4.9.2编译以下程序时,出现以下警告:传递给‘P’的第1个参数类型不兼容。然而,我没有发现程序有任何错误。有什么线索吗? typedef int Row[10]; void P(const Row A[]) { } int main(void) { Row A...

31得票8回答
如何正确地将浮点数和整数进行类型转换?

下面的代码通过一些比特操作执行快速反平方根运算。该算法可能是由Silicon Graphics在1990年代初开发的,它也出现在Quake 3中。更多信息 然而,我从GCC C++编译器得到以下警告:解引用类型转换后的指针将会违反严格别名规则。 在这种情况下,我应该使用static_cas...

20得票4回答
如何打印一个函数的地址?

我使用 -Wall -pedantic 让 gcc 编译了以下示例:#include <stdio.h> int main(void) { printf("main: %p\n", main); /* line 5 */ printf("main: %p\n", (voi...

7得票2回答
将一个二维数组传递给一个常量参数的函数

我从《C Primer Plus》中了解到,如果你想保护一个数组不被函数意外修改,应该在函数定义的头部,在指针声明之前添加const修饰符。 按照这个明智的建议,在下面这个最小的示例中,我试图将非常量二维数组array传递给函数Sum2D,其中一个参数是pointer-to-const-int...

14得票3回答
“warning: assuming that the loop is not infinite”的解释是什么?

我刚刚决定将尽可能多的变量从unsigned更改为int,在重新编译相关代码后,收到了以下警告消息:freespace_state.c:203: warning: assuming that the loop is not infinite 需要翻译的内容:这行代码:for (x = star...