【发布时间】:2013-05-23 16:29:20
【问题描述】:
我有这个非常简单的代码:
constexpr int main()
{
return 0;
}
我从 C++11 标准 N3485 了解到这是非法的:
函数 main 不得在程序中使用。 main 的链接(3.5)是实现定义的。 将 main 定义为已删除或将 main 声明为内联、静态或 constexpr 的程序格式不正确。 名称 main 未被保留。
当我使用 gcc 4.7.2 运行它时。它输出以下错误:
prog.cpp:1:20: error: cannot declare ‘::main’ to be inline
同时,如果我从函数体中删除 return 0,它会报告相同的错误,甚至不会给出来自 main 的缺少 return 语句的警告。
这是 gcc 4.7.2 的错误吗?为什么constexpr 报告为inline?第二种现象是否意味着在main中不放return语句是可以的,还是默认return 0即使我不放return语句也可以(我知道这是不好的做法)?
谢谢。
【问题讨论】:
-
在 C++ 中(现在也在 C 中)如果在
main中没有return,则暗示与return 0;相同。 -
@JoachimPileborg 谢谢。我会记住这个事实。