我能否在C++ 1y(C++ 14)中为main函数执行以下操作:
auto main()
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
int
即使我们不需要使用显式,返回类型也会自动生成return 0;
吗?
And*_*owl 23
不,这是不允许的.C++ 14标准草案N3690的第7.1.6.4/10段规定:
如果具有使用占位符类型的声明返回类型的函数没有
return
语句,则推断返回类型,就像return
在函数体的右括号中没有操作数的语句一样.[...]
这意味着省略return
语句main()
将使其类型void
.
第3.6.1/5段引入的关于流出结尾的特殊规则main()
规定:
[...]如果控制到达结束而
main
没有遇到return
语句,则效果是执行Run Code Online (Sandbox Code Playgroud)return 0;
措辞说,执行程序时的"效果"与存在时的效果相同,而return 0
不是return
声明将被添加到程序中(根据引用的段落会影响类型扣除).
编辑:
有一个缺陷报告(由Johannes Schaub提供):
拟议决议(2013年11月):
更改3.6.1 [basic.start.main]第2段如下:
实现不应预定义主函数.此功能不应过载.它应具有int类型的声明返回类型,否则其类型是实现定义的.
所有实现实现应允许两者
()
返回int
和的功能- 返回的(
int
,指向指针的指针char
)的函数int
作为类型......
归档时间: |
|
查看次数: |
877 次 |
最近记录: |