我想知道为什么gcc在编译时不会显示错误,即使在使用-Wall选项时也是如此。还尝试了-std = c89选项。
以下是代码:
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
很抱歉,如果这篇文章重复,但无法找到使用此选项的情况。
谢谢!
答案 0 :(得分:1)
在C ++和C99及更高版本中,在不返回值的情况下命中main()
的末尾等同于返回0.在C标准的早期版本中,编译器未定义的行为是未定义的行为。尽管在实践中,GCC可能会像C ++或C99一样进行隐式return 0;
。
有关详细信息,请参阅What should main() return in C and C++?。