首页 > 后端开发 > C++ > C 的 `main()` 函数可以递归吗?

C 的 `main()` 函数可以递归吗?

Linda Hamilton
发布: 2024-11-28 22:54:14
原创
247 人浏览过

Can C  's `main()` Function Be Recursive?

C 的 main() 函数中的递归限制

在 C 中,main() 函数中递归的使用一直是辩论的主题。许多开发人员观察到,GNU 编译器集合 (g ) 允许 main() 中的递归,尽管 C 标准中据称禁止这样做。

标准限制

根据C 标准 (3.6.1/3),main() 中的递归是明确的禁止:

“程序中不得使用 main 函数 (3.2)。”

“已使用”的定义

该标准还将“used”定义为对象或非重载函数:

“如果其对象或非重载函数被使用,则使用该对象或非重载函数name 出现在潜在评估的表达式中。”

因此,从内部调用 main() 构成“使用”,因此根据标准是不允许的。

编译器行为

尽管标准禁止,g 编译以下代码时没有错误:

int main()
{
    main();
}
登录后复制

出现此差异是因为 g 的默认优化级别包括小于预配置阈值的内联函数。由于此代码中的递归是单个函数调用,因此它可能会低于阈值并由 g 内联。

结论

虽然 g 可能允许 main 中的递归() 在某些情况下,C 标准严格禁止这样做。开发者应遵守标准的要求,以确保程序的正确性和潜在的陷阱。

以上是C 的 `main()` 函数可以递归吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板