它在 c 標準檔案中明確指出程式不能呼叫 main。然而我寫了一個呼叫 main 的程式并且運行良好,這是為什么呢?編碼:
#include<iostream>
static int counter = 0;
int main(){
counter ;
std::cout << counter << " It works" << std::endl;
while(counter < 10){
main();
}
return 1;
}
它列印到控制臺“它有效”10 次。根據標準檔案,這不應該起作用,但它起作用。這是怎么回事?
uj5u.com熱心網友回復:
basic.start.main/3:
該功能main不得在程式中使用。
違反此規則會使您的程式具有未定義的行為- 這意味著該程式幾乎可以做任何事情。它甚至可能做你想做的事,或者看起來做你想做的事,但有破壞性的副作用,所以避免在你的程式中出現未定義的行為。
關于缺少診斷訊息:我懷疑某些編譯器(例如 g )實際上支持將呼叫main作為擴展名。我必須打開-pedantic或-pedantic-errors獲取診斷訊息“ ISO C 禁止獲取函式 '::main' [-Wpedantic] 的地址”
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/356409.html
上一篇:JavaScript問題中的遞回-此處console.log的位置如何影響回傳值的順序?
下一篇:遞回函式經常重復出現
