Các mã sau biên dịch và chạy nhưng tôi hy vọng một cảnh báo khi biên dịch:GCC không phát ra một cảnh báo khi biên soạn
#include <stdio.h>
#include <stdlib.h>
int main(void){
int x = 10;
printf("%p\n",&x);
return EXIT_SUCCESS;
}
GCC,from an online compiler với đối số dòng lệnh
-Wall -std=gnu99 -O2 -o a.out source_file.c -pedantic -Wextra
đưa ra cảnh báo sau khi biên soạn
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);
vì tôi chưa thêm (void*)
đúc trước &x
như %p
hy vọng một đối số kiểu void*
.Nhưng khi tôi biên dịch sử dụng
gcc SO.c -o so -Wall -Wextra -pedantic -std=c11
hoặc
gcc SO.c -o so -Wall -Wextra -pedantic -std=c99
hoặc
gcc SO.c -o so -Wall -Wextra -pedantic -std=c89
GCC (trong máy tính của tôi) không không đưa ra cảnh báo trong khi biên dịch (một lần nữa trong PC của tôi) sử dụng
gcc SO.c -o so -Wall -Wextra -pedantic -std=gnu11
hoặc
gcc SO.c -o so -Wall -Wextra -pedantic -std=gnu99
hoặc
gcc SO.c -o so -Wall -Wextra -pedantic -std=gnu89
hoặc
gcc SO.c -o so -Wall -Wextra -pedantic
Tôi nhận được cảnh báo nêu trên. Tại sao nó lại như vậy? Phiên bản GCC của tôi là 4.8.1 và tôi đang sử dụng Windows. Tôi biên dịch từ bảng điều khiển, ví dụ: cmd
.
Có phải mingw gcc, cygwin gcc hay cái gì khác không? – ouah
@ouah, tôi không biết chính xác, nhưng sử dụng 'gcc -v' hiển thị' Mục tiêu: mingw32'. Vì vậy, tôi đoán mingw gcc của nó –