我最近看到好奇心在HHVM源代码中,main()函数的前3行读取如下:
if (!argc) { return 0; }
这有点傻,但还是,我只是不禁想知道为什么要返回0!这不是我认为有一些正确的方法来处理这个问题,但返回0(通常与成功相关)似乎是不合适的.
除了没有崩溃,有没有一个适当的答案argc为0的情况? (甚至小于0?)有没有关系?
我知道在argc为0的情况下,唯一的方法是与exec()和朋友.如果由于某种原因确实发生,这几乎肯定是来电者的一个错误,被叫方不能做太多事情.
(标记为C和C,因为我希望两种语言的答案是一样的)
编辑:为了尝试使问题不那么模糊和哲学,我会提供一个选择.
if (!argc) { puts("Error: argc == 0"); return 1; }
要点是有错误的指示,并返回非零值.这是非常不可能的,这是需要的,但如果是你可能会尝试指出错误.另一方面,如果检测到的错误与argc等于0一样严重,也许有一个原因,尝试访问stdout或C标准库是不好的.