首页 > 后端开发 > C++ > `main()` 真的标志着 C 程序的绝对开始吗?

`main()` 真的标志着 C 程序的绝对开始吗?

Linda Hamilton
发布: 2024-12-13 22:45:20
原创
752 人浏览过

Does `main()` Truly Mark the Absolute Beginning of a C   Program?

Main() 被误解为 C 中的绝对开始

与普遍看法相反,$3.6.1/ 节中的 C 标准1,通过声明“程序应包含一个名为 main 的全局函数,它是程序的指定开始”,并不意味着前面没有代码main() 的执行。相反,它将“开始”的概念建立为程序中的特定点。

为了说明这种区别,请考虑以下代码片段:

int square(int i) { return i*i; }
int user_main() { for ( int i = 0 ; i < 10 ; ++i ) std::cout << square(i) << endl; return 0; }
int main_ret= user_main();
int main() { return main_ret; }
登录后复制

此代码初始化全局变量main_ret 通过在调用 main() 函数之前执行 user_main() 来实现。尽管有这样的执行顺序,user_main() 并不被视为标准定义的程序的真正“开始”。

C 标准中“开始”的定义

问题的关键在于对“开始”的解释。标准将 main() 指定为程序的“指定开始”,有效地将“开始”定义为调用 main() 的点。但是,它并不禁止在此指定之前执行代码。

对代码合规性的影响

根据这种解释,给定的代码片段完全符合C 标准。即使 user_main() 在 main() 之前执行,程序的“开始”仍然在 main() 被调用的地方。

结论

虽然看起来可能直觉上 main() 应该是 C 程序的绝对开始,但标准采用了不同的定义。它将 main() 建立为程序“启动”的指定点,以便进一步执行和规范。

以上是`main()` 真的标志着 C 程序的绝对开始吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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