期末projects使用cygwin時 去編譯在unix環境下寫的c++程式所發生的錯誤訊息 cygwin即是在windows下模擬unix的command mode (不知道如何稱呼,總之是文字模式) 其中的問題點在於編譯到某兩個檔案時 均會產生:error: ISO C++ forbids initialization in array new 上網查資料竟然發現資料不多 但幸好還是有找到解決方法 以下文字出自[藍森林-自由軟件]並將一些字換成英文: "過去版本的C++編譯器允許在new array時候進行初始化。如已經定義一個class T,可以這樣初始化:T* p = new T[10](5);或者 T* p = new T[10](5, 7),即用戶可以通過call class T 的不同的constructor進行相應的初始化。 但是現在的C++標準或者C++編譯器(如最新版本的GCC 3.4.0)則不允許這樣做,在new的時候只能call default的constructor初始化對象,用戶不能指定初始化值或者要求使用哪一個constructor進行初始化。如果你這樣做,編譯器會輸出一條錯誤信息:error: ISO C++ forbids initialization in array new。另外,如果你指定初始化值的話,不錯,就像你說的那樣,編譯器還是跟從前一樣進行檢查,看是否跟class的constructor的格式一致,如果不一致,除了上面的錯誤之外,還會回報沒有相應的constructor的錯誤。" 因此解決的方法為在cygwin安裝Devel的packages時 gcc預設的版本為3.4.4.3(印象中) 但可選擇為3.3.3.3的版本 也就如同上述那段文字GCC 3.4.0編譯時會產生這樣的錯誤 而選擇安裝較舊3.3.3.3的版本後即可編譯成功 也就順利解決問題!
創作者介紹
創作者 lotoria 的頭像
lotoria

lotoria

lotoria 發表在 痞客邦 留言(0) 人氣( 1135 )