GCC 没有发出警告,尽管它应该发出警告
GCC not warning although it should
我有一个非常简单的 Hello World 程序,它的 main() 函数末尾没有 return。如果我理解正确的话,这应该会抛出一个 Wreturn 类型的警告,但是当我编译它时,根本没有给出任何输出。它只是编译它并完成。
程序:
#include <stdio.h>
int main() {
printf("Hello World!\n");
}
编译命令:
gcc -Wall -Wextra -o hello.o hello.c
我还专门尝试了 Wreturn-type
选项。
在带有 GCC 8.2.1 的 Manjaro 18.0.0 上
使用
gcc -std=c89 -pedantic ...
因为在 C99 中 1 main()
不需要 return 0;
。就好像在右大括号之前有一个。
我有一个非常简单的 Hello World 程序,它的 main() 函数末尾没有 return。如果我理解正确的话,这应该会抛出一个 Wreturn 类型的警告,但是当我编译它时,根本没有给出任何输出。它只是编译它并完成。
程序:
#include <stdio.h>
int main() {
printf("Hello World!\n");
}
编译命令:
gcc -Wall -Wextra -o hello.o hello.c
我还专门尝试了 Wreturn-type
选项。
在带有 GCC 8.2.1 的 Manjaro 18.0.0 上
使用
gcc -std=c89 -pedantic ...
因为在 C99 中 1 main()
不需要 return 0;
。就好像在右大括号之前有一个。