中的程序啓動,我有幾個有關標準§5.1.2.2.2的問題。關於標準
稱爲在程序啓動的功能被命名爲主要。該實現沒有聲明這個函數的原型。它應具有的INT返回類型和不帶參數 定義:
int main(void) { /* ... */ }
或兩個參數(這裏稱爲 ARGC和argv的,雖然任何名稱可能是使用的,因爲它們是地方在聲明它們的 功能):
int main(int argc, char *argv[]) { /* ... */ }
或同等學歷; 10)或其他一些 實現定義的方式。
什麼是「其他一些實現定義的方式」是指什麼?它提及腳註10,其中指出:
因此,INT可以通過定義爲INT,或 的的argv類型可以寫爲炭typedef名稱來代替** argv,等等。
...還是主要的實際定義?如果是這樣,這是否意味着給定了某種實現方式,編譯器可以說main
應該被定義,然而它想要的(這與我在互聯網上讀到的說法相反,它必須是int main
。例如,在§5.1.2.2 .3規定:
- 如果主要函數的返回類型與INT兼容的類型,從最初的調用主要功能的回報相當於 於調用退出函數返回的值爲t他主要 作爲其論點; 11)到達}終止了主 函數如果返回類型不與INT兼容 返回0的值,則終止狀態返回到主機環境是 未指定的。
......這似乎給實施留下了很大的餘地。
- 參數的argc和的argv和琴絃指向 的的argv陣列應被程序是可修改的,和保留程序啓動和程序 終止之間 其最後存儲的值。
「保留其最後存儲的值是什麼意思」?這是否意味着像getopt
這樣的函數違反了標準,因爲它們排列了argv?