main() 真的是 C 程式的起點嗎?
C 標準在第 3.6.1/1 節中宣告程式必須擁有一個名為 main 的全域函數,它作為指定的起點。然而,進一步的分析和說明性代碼範例使人們對該陳述的有效性產生了疑問。
考慮以下程式碼:
此程式碼實現了其預期目的:它輸出平方0 到 9 之間的整數。然而,令人費解的方面在於函數 user_main() 在 main() 之前執行,而 main() 被認為是程式的起點。使用 GCC 4.5.0 使用 -pedantic 選項編譯此程式碼不會引發任何錯誤或警告。
此觀察提示了一個問題:此程式碼符合標準嗎?
要回答這個問題,我們必須更深入地研究「程式開始」這句話的意思。該標準專門針對該標準本身的上下文定義了該術語。它並不斷言在 main() 之前不能執行任何程式碼。相反,它確定程式的開頭是 main() 開始的點。
在此範例程式碼中,根據定義,user_main() 確實在程式「啟動」之前運行由標準提供。因此,此程式碼完全符合要求。根據設計,重要的程式碼通常會在呼叫 main() 之前執行,包括這個範例。
因此,誤解是由於誤解了標準的定義而產生的。為了標準的討論, user_main() 在程式「啟動」之前執行,且此行為完全符合標準。
以上是`main()` 是否總是標記 C 程式執行的真正開始?的詳細內容。更多資訊請關注PHP中文網其他相關文章!