Re: [問題] main 前執行之函式?(已解決)

看板C_and_CPP (C/C++)作者 (小西風最乖了*^^*)時間14年前 (2011/09/03 19:21), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《tropical72 (藍影)》之銘言: : 一開始一直試都不成功,原因在於 Visual C++ .c 不支援 C99, : 改 .cpp 之後就過了,一開始查 msdn ,查到這份網頁 : http://msdn.microsoft.com/en-us/library/bb918180.aspx : 看完第一個 global variable initialize 後,裡面說明提到 : According to the C/C++ standard, func() must be called before main() is : executed. But who calls it? : ( M$ 真是自打嘴巴,明明說標準可以這麼做,偏偏 .c 連這點都不支援) : 這部份可能查 C99 會有更多的說明, 但 M$ 這份我覺得寫得還不錯。 (其他恕刪)因為要講的東西好像還不少,回一篇文章好了。 (1) 首先 MSVC++ 不算做錯,因為 C99 (N1256) 禁止這語法而且編譯 器有責任發出錯誤訊息。標準說 | All the expressions in an initializer for an object that has static | storage duration shall be constant expressions or string literals. @ C99 (N1256) 6.7.8p4 俗稱的全域變數符合這條,所以本來就不能呼叫函數。MSDN 寫 C/C++ 可能只是偷懶而已 xD 補:編譯器要允許更多形式的初始化方法是他的自由 xD (2) C++ 允許更多初始化這些變數的方法,也有稍微複雜的初始化順序 規則。變得比較「方便」的代價就是比較容易寫出錯誤的程式碼。 我記得 Google 的 C++ 寫作風格有針對 static 做嚴格規定 xD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.39

09/03 22:02, , 1F
我以後想查字典時找 Favonia 好了 XD, 非常感謝 !!
09/03 22:02, 1F

09/04 00:49, , 2F
ya... google C++ 不能用 global object variable..
09/04 00:49, 2F

09/04 10:00, , 3F
Favonia大字典<(_ _)>
09/04 10:00, 3F

09/04 10:24, , 4F
Favonia大字典<(_ _)>
09/04 10:24, 4F
※ 編輯: Favonia 來自: 140.112.30.39 (09/05 00:48)
文章代碼(AID): #1EOWswys (C_and_CPP)
文章代碼(AID): #1EOWswys (C_and_CPP)