我最近看到了一些奇怪的东西。在 HHVM 源代码中,main()
函数的前 3 行如下所示:
if (!argc) {
return 0;
}
这有点傻,但我还是忍不住想知道……为什么要返回 0!?并不是我认为有一些正确的方法来处理这个问题,而是返回 0,通常与成功相关,似乎特别不合适。
除了不崩溃之外,是否存在对0有适当响应的argc
情况?(或者甚至小于 0?)这有关系吗?
我所知道的以argc
0 结尾的唯一方法是exec()
和朋友一起。如果由于某种原因确实发生了这种情况,那几乎可以肯定是调用者中的一个错误,而被调用者对此无能为力。
(标记为 C 和 C++,因为我希望这两种语言的答案是相同的)
编辑:为了尝试使问题不那么模糊和哲学,我将提供一个替代方案。
if (!argc) {
puts("Error: argc == 0");
return 1;
}
关键点是有错误指示并返回非零值。极不可能需要这样做,但如果是这样,您不妨尝试指出错误。另一方面,如果检测到的错误严重到argc
等于 0,那么尝试访问 stdout 或 C 标准库可能是有原因的。