【发布时间】:2015-01-03 13:26:08
【问题描述】:
以下代码编译并运行,但我希望在编译时出现警告:
#include <stdio.h>
#include <stdlib.h>
int main(void){
int x = 10;
printf("%p\n",&x);
return EXIT_SUCCESS;
}
GCC,from an online compiler 带命令行参数
-Wall -std=gnu99 -O2 -o a.out source_file.c -pedantic -Wextra
编译时发出以下警告
source_file.c: In function ‘main’:
source_file.c:7:3: warning: format ‘%p’ expects argument of type ‘void *’, but argument 2 has type ‘int *’ [-Wformat=]
printf("%p\n",&x);
因为我没有在&x 之前添加(void*) 演员表,因为%p 需要void* 类型的参数
.但是当我使用
gcc SO.c -o so -Wall -Wextra -pedantic -std=c11
或
gcc SO.c -o so -Wall -Wextra -pedantic -std=c99
或
gcc SO.c -o so -Wall -Wextra -pedantic -std=c89
GCC(在我的 PC 中)不在编译(再次在我的 PC 中)使用时发出警告
gcc SO.c -o so -Wall -Wextra -pedantic -std=gnu11
或
gcc SO.c -o so -Wall -Wextra -pedantic -std=gnu99
或
gcc SO.c -o so -Wall -Wextra -pedantic -std=gnu89
或
gcc SO.c -o so -Wall -Wextra -pedantic
我收到上述警告。为什么会这样?我的 GCC 版本是 4.8.1,我使用的是 Windows。我从控制台编译,即cmd。
【问题讨论】:
-
是mingw gcc、cygwin gcc还是别的什么?
-
@ouah ,我不太清楚,但使用
gcc -v显示Target: mingw32。所以我猜它的mingw gcc