Main() 真的是 C 程序的启动吗?
C 标准将 main() 定义为 C 程序的唯一起点程序:“程序应包含一个名为 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() 之前执行了 user_main() 函数,而 main() 应该是初始执行点。此外,代码编译时不会出现错误或警告。
定义程序的“开始”
正确解释术语“程序的开始”至关重要。标准将开始定义为程序被认为开始的点,不一定是在第一个代码执行时。
在此示例中,程序以 main() 开始,但这并不意味着没有代码提前执行。实际上,大量代码通常在 main() 之前执行,尤其是在初始化期间。
标准合规性
尽管代码的执行顺序不寻常,但它完全遵循标准。根据定义,程序的开始是main(),尽管user_main()执行得更早。执行顺序不会改变程序的起始被定义为 main() 函数的事实。
因此,给定的代码是符合标准的,并且它不会使标准对开始的定义无效。程序作为 main()。
以上是`main()` 真的是 C 程序中执行的第一个代码吗?的详细内容。更多信息请关注PHP中文网其他相关文章!