APUE 的 7.3 节,Process Termination, 讲在各种情况下一个 C 程序的 exit status,看着实在是乱。
我在 Mac 上用 gcc 4.2 试了一下,大致是如下情况:
- main 的返回类型不显式定义或定义为 int,不写 return 语句,默认编译后 exit status 是 255. 而指定 C99 标准编译(没有显示定义返回值的话有警告,返回值默认为 int),是 0
- 定义 main 返回类型为 void,不写 return,exit status 是 10
- 定义 main 返回类型为 void,return 不加参数,exit status 是 255
怎么办?我觉得很简单,这种东西是不需要记忆的——如果在意 exit status 的话,记住给 main 定义 int 型返回值,调用 return 和 exit 时加上参数不就行了吗。
既然有了标准,就不用可以记住不标准的东西会有什么结果了。我们凡人脑容量有限,应该腾出地方来记更有意义的东西。
Leave a Reply