如果 main 函数的返回类型是与 int 兼容的类型,则初始调用 main 函数的返回相当于以 main 函数的返回值作为参数调用 exit 函数
这排除了你破坏堆栈框架理论的可能性;return 0;在功能上与一致的 C 实现相同exit(0);(至少对于非递归main入口点)。
我认为这种变化仅仅是风格上的,或者可能是出于无知。另一种可能是作者有转变main成递归函数的愿望(或者main已经转变成递归函数了;idk,我只是做了一个快速的 grep ,它看起来并没有立即递归)。最后,作为最后一个严峻的选择,也许 FreeBSD 使用的 C 实现是不合格的(我当然希望不是!)...
编辑:通过阅读这个答案,我突然想到这可能是编译器错误的解决方法,但可惜我检查了源代码的使用情况atexit,并且找不到任何理由进一步追求这一推理。