GCC不会发出警告,尽管它应该发出警告

GCC不会发出警告,尽管它应该发出警告,c,gcc,warnings,compiler-warnings,C,Gcc,Warnings,Compiler Warnings,我有一个非常简单的Hello World程序,它的main()函数末尾没有返回值。如果我理解正确,这应该抛出一个Wreturn类型的警告,但是当我编译它时,根本没有给出任何输出。它只是简单地编译并完成 节目: #include <stdio.h> int main() { printf("Hello World!\n"); } 我还特别尝试了Wreturn类型选项 在带有GCC 8.2.1的Manjaro 18.0.0上使用 gcc -std=c89 -pedantic ...

我有一个非常简单的Hello World程序,它的main()函数末尾没有返回值。如果我理解正确,这应该抛出一个Wreturn类型的警告,但是当我编译它时,根本没有给出任何输出。它只是简单地编译并完成

节目:

#include <stdio.h>
int main() {
  printf("Hello World!\n");
}
我还特别尝试了
Wreturn类型
选项

在带有GCC 8.2.1的Manjaro 18.0.0上使用

gcc -std=c89 -pedantic ...

因为在C99中
main()
不需要
返回0。这就好像在右大括号之前有一个一样。

“如果我理解正确,这应该会抛出一个Wreturn类型的警告,…”不,不应该。对于C99,这是可选的。您的期望值不正确。可能是:“如果没有提供C语言方言选项,则默认值为
-std=gnu11
gcc -std=c89 -pedantic ...