我閱讀了main function,并遇到了以下單詞:
main 函式有幾個特殊的屬性:
- 程式無法提供此函式的原型。
然后我寫了一個簡單的程式:
# cat foo.c
int main(void);
int main(void)
{
return 0;
}
并編譯它:
# gcc -Wall -Wextra -Wpedantic -Werror foo.c
#
一切似乎都OK!所以我對如何理解“程式無法提供此功能的原型”感到困惑。任何人都可以提供一些見解嗎?
uj5u.com熱心網友回復:
C 標準 (5.1.2.2.1) 只是說編譯器(對于 PC 等托管系統)不會提供該main函式的原型。所以 cppreference.com 并不是真的正確,C 標準并不禁止應用程式程式員撰寫原型,盡管這樣做在托管系統中可能是毫無意義的做法。
在獨立系統(嵌入式系統等)中,宣告原型可能很有意義,main以防需要從重置 ISR 或“C 運行時”(CRT) 呼叫它。
無論系統如何,重要的是編譯器指定哪些形式main有效。從來沒有程式員。
uj5u.com熱心網友回復:
main函式引數和回傳值由標準定義。您不得提供自己的。但是編譯器甚至可以接受和編譯非標準型別的main.
另一方面,您的main代碼不會呼叫該函式,因此根本不需要您的原型。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/537436.html
標籤:C
下一篇:udp廣播是否會環回?
