问题:
下面的代码编译没有错误,但是进入了无穷大循环:
int main() { return main(); }
答案:
在 C 中从自身内部调用 main 函数会导致未定义的行为。未定义的行为意味着任何事情都可能发生,包括:
C 标准明确规定 main 函数不能由表达式命名。当 main 调用自身时,编译器必须发出诊断消息并且不编译代码。
尽管有此标准要求,但某些编译器可能不会发出诊断消息并允许程序编译。然而,执行这样的程序会调用未定义的行为。
编译器行为:
编译器不需要强制执行 C 标准的所有规则,包括禁止 main 的规则调用自己。它们可能会发出警告或错误,但具体行为因不同的编译器和编译器设置而异。
含义:
在 C 中递归调用 main 是非法的。即使编译器允许,程序也会表现出未定义的行为,不应依赖。
以上是C 中的 main 函数可以递归调用自身吗?的详细内容。更多信息请关注PHP中文网其他相关文章!