【发布时间】:2021-04-08 14:04:49
【问题描述】:
标准中有一些main() 函数的规则。
如果函数被操作系统调用,argc 的值是非负的,
返回值默认为0等
另一方面,main() 可以被其他函数调用,
因此暗示main()的递归执行。
在这种情况下,如果main()被另一个函数调用,
返回值默认为0还是真的吗,
或者argc 必须是非负数?
【问题讨论】:
-
默认返回值为零是什么意思?如果返回类型不是
void,则需要返回值。如果是int,则需要一个值。 -
@markw
main可以省略return语句,在这种情况下它隐含return 0 -
1.
main不知道叫什么。它是一个函数:给定相同的输入,除非明确要求,否则它将以相同的方式运行。 2. 标准规定操作系统如何调用main。这并不限制你如何显式调用main。如果你想传递一个否定的argc,那是你的选择,但你必须确保你的main实现处理它。 -
@jamesdlin 我明白你的意思。这是常识告诉我的。然而,标准是棘手的。例如,您的断言 1 不一定正确。该标准区分
main()的“初始”执行(其中返回就像调用exit()一样完成)与否。就您的第 2 点而言,我能够处理像argc < 0这样的案例。我的观点是,在提及仅启动情况时,标准可能在这里并不清楚。