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;。就好像在右大括号之前有一个。