Следующий код компилируется и работает, но я ожидаю предупреждение при компиляции:НКУ не выдавать предупреждение при компиляции
#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);
потому что я не добавил (void*)
отбрасывать перед тем, как &x
%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 (в моем компьютере) делает не выдают предупреждение, тогда как компиляция (снова на моем ПК) с использованием
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
@ouah, я не знаю точно, но используя 'gcc -v' показывает' Target: mingw32'. Поэтому я предполагаю, что его mingw gcc –