首页 > 解决方案 > GCC 没有警告,虽然它应该

问题描述

我有一个非常简单的 Hello World 程序,它在 main() 函数的末尾没有返回。如果我理解正确,这应该会引发 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 上

标签: cgccwarningscompiler-warnings

解决方案


采用

gcc -std=c89 -pedantic ...

因为在 C99 1 main()中不需要return 0;. 就好像在右大括号之前有一个。


推荐阅读