main()在C和C++中定义函数的正确(最有效)方法是什么- int main()或void main()- 为什么?如果int main()那么return 1或return 0?
这个问题有很多重复,包括:
main()函数的有效签名是什么?main()函数void main()和int main()?main()在C++中的签名main()? - 对于C++,确实有一个非常好的答案.main()C语言中的函数样式main()C中的方法类型int main()vs void main()在C中有关:
C 2018 5.1.2.3 6说:
符合实施的最低要求是:
根据抽象机器的规则严格评估对易失性对象的访问.
在程序终止时,写入文件的所有数据应与根据抽象语义执行程序的结果相同.
交互设备的输入和输出动态应按照7.21.3的规定进行.这些要求的目的是尽快出现无缓冲或行缓冲输出,以确保在程序等待输入之前实际出现提示消息.
这是该程序的可观察行为.
从表面上看,这不包括程序的退出状态.
关于exit(status),7.22.4.4 5说:
最后,控制权返回给主机环境.如果值
status为零或EXIT_SUCCESS,则返回状态成功终止的实现定义形式.如果值status是EXIT_FAILURE,地位的实现定义的形式成功终止返回.否则返回的状态是实现定义的.
标准没有告诉我们这是可观察行为的一部分.当然,这种exit行为纯粹是C的抽象机器的描述是没有意义的; 除非在环境中可观察到,否则向环境返回值没有意义.所以我的问题不在于退出状态是否可观察到这是否是C标准对可观察行为的定义中的缺陷.或者标准中的其他地方是否有适用的文字?