32得票8回答
GCC 缺少初始值设定项周围的括号

我在C语言中有一个结构体如下,我想将其初始化为全零。如何消除缺少花括号的警告?typedef struct { uint32_t incoming[FRAME_TYPE_MAX]; uint32_t outgoing[FRAME_TYPE_MAX]; uint32_t ...

8得票5回答
在C语言中,十六进制常量即使带有L后缀也是无符号的。

我知道这是一个简单的问题,但我感到困惑。我有一个相当典型的gcc警告,通常很容易修复: warning: comparison between signed and unsigned integer expressions 每当我有一个带有最高有效位的十六进制常数,比如0x80000000...

172得票4回答
警告:内置函数“xyz”的隐式声明不兼容。

当我编译一些可执行文件时,我得到了很多这样的警告:warning: incompatible implicit declaration of built-in function ‘strcpy’ warning: incompatible implicit declaration of bui...

9得票2回答
忽略注释:未使用“-Wno-packed-bitfield-compat”选项的压缩位域偏移量。

我尝试编译以下的 union 时,弹出了警告提示: 10:5: 注意:在 GCC 4.4 中,紧凑位域 'main()::pack_it_in::::two' 的偏移量已更改。 #pragma GCC diagnostic ignore "-Wpacked-bitfield-compat" ...

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

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

10得票3回答
如何使gcc/clang在switch语句中警告缺少break的情况

有没有办法让 gcc 或 clang 在 switch 语句中缺少 break 时发出警告? 具体来说,我几乎总是希望 case 语句以 break ��尾,如果没有的话,编译器会抱怨就好了。更好的是,它可以寻找 break 语句或“// fall through”注释。 人们是否有不搞砸...

9得票4回答
从以下代码中收到警告“将不同大小的整数转换为指针”

代码如下: Push(size, (POINTER)(GetCar(i) == term_Null()? 0 : 1)); 这里是C代码push返回ABC的代码。 typedef POINTER *ABC typedef void * POINTER AB...

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 命令时,为什么没有任何警告?这段代码有可能不会导致分段错误吗?

198得票2回答
在C语言中,“&&”操作符是什么?

#include <stdio.h> volatile int i; int main() { int c; for (i = 0; i < 3; i++) { c = i &&& i; ...