首頁 > 後端開發 > C++ > `main()` 真的是 C 程式中的第一行執行嗎?

`main()` 真的是 C 程式中的第一行執行嗎?

Mary-Kate Olsen
發布: 2024-12-14 01:02:06
原創
505 人瀏覽過

Is `main()` Really the First Line of Execution in a C   Program?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板