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中文網其他相關文章!