Main() 真的是 C 程式的開始嗎?
C 標準在 $3.6.1/1 節中規定每個程式必須包含一個名為 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; }
此程式碼透過列印從 0 到 的整數的平方成功地實現了其預期目的。 9 在進入 main() 函數之前。有趣的是,在 GCC 4.5.0 中使用 -pedantic 標誌時,程式碼編譯時沒有錯誤或警告。
這個觀察引發了對標準聲明 main() 是程式的起點。該程式碼似乎在進入指定的起點之前執行用戶定義的函數。
「開始」的定義
爭議取決於「的精確定義」程序開始。 「該標準沒有明確定義該術語,留下了解釋的空間。有些人可能會認為「開始」意味著程式碼的初始執行,在本例中發生在user_main() 中。其他人可能會認為「start」指的是語言規範定義的指定起點。的全域函數,它是程式的指定啟動。不會執行任何程式碼。作為程式所有後續討論和定義的指定起點。 。 main()
保留其指定為C 程式的起始點,即使使用者定義的程式碼可能會在到達此指定起始點之前執行。 >以上是`main()` 真的是 C 程式中的第一行執行嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!