Re: [問題] gcc -std=c++98 的 error

看板C_and_CPP (C/C++)作者 ( )時間16年前 (2009/04/10 19:16), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《photon3108 (John)》之銘言: : 其實我有點不了解的是,這個選項可以做到: : (standard c++ 的版本是 98 or later) : a. 符合 standard c++ 的功能,都可以使用。 : b. 不符合 standard c++ 的功能,都不允許編譯通過。 : 可以做到嗎? 目前最標準的 C++ 是 C++03, 但是 C++03 還是沒有納入 C99, 正式納入 C99 的是 C++0x (應該已經確定是 09), 但是這個標準還沒出來, 所以你下這種選項會發生什麼事情還是沒有一定。 : 另外,有一個疑問是,程式內容沒有使用寬字元,也沒有使用這兩個 functions, : (所以應該也沒有使用到 C99),為什麼會跳出這些 errors?,這個問題只有我遇 : 到嗎?,如果是的話,是不是我的電腦有問題。 不是你的電腦有問題, 應該是某些 header (像是 iostream) 的內部實作會 include 一些 file, 然後 call 一些 function, 但是它 include 的 file 會因為 -std=c++98 設了一些 macro, 使得一些 function 宣告式被條件式編譯過濾掉, 就會出現這類 error; 這應該是 release library 的人沒測過 -std=c++98 就放出來的緣故, 因為大部分 default 就是 -std=gnu++98。 靠 compiler 檢查標準畢竟不是一個辦法, 還是自己多看書搞清楚自己寫的每一行是不是標準才是正途, 因為實務上大家就是喜歡用一些 compiler 提供的 extensions, 特別是 C99 混搭 C++98 這一項。 -- Ling-hua Tseng (uranus@tinlans.org) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://www.tinlans.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.110.179 ※ 編輯: tinlans 來自: 118.160.110.179 (04/10 19:16)
文章代碼(AID): #19tofnfu (C_and_CPP)
文章代碼(AID): #19tofnfu (C_and_CPP)