void func(int i)
{
char c[i];
// ...
}
用 g++ (2.8.0) compile 竟然會過,run 也沒有問題,利用 VC compile
則有 expected constant expression 的錯誤發生。
不過根據 C++ 的標準,array bound 必須是 constant expression 的。
我知道 GNU C/C++ 還有許多不是 standard 規定的「特異功能」,雖然有時
這些功能會很方便,不過終究不是標準,會降低程式 portability,不知
各位覺得如何?
--
Jiun-Yao Huang <mailto:jyh...@csie.nctu.edu.tw> Uni\/\/indows
Dep. of Comp. Sci. & Info. Eng., NCTU, Hsin-Chu, Taiwan, R.O.C. WW\/\/etworks
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SIGIDLE: Idle too long (core dumped)
不是標準的功能,覺得需要 protability 就不要用呀...
那是自己要處理的事情,怎麼怪到別人身上呢?
通常遇到這種情形,都會加上 #ifdef 來處理,這是很常見的做法。
[m [1;34m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 163.13.93.101] [m
利用 #ifdef 的方式我知道,我也常用...:-)
可是並不是每一個人都是熟讀 C++ 的 spec 後才開始 programming 的。
我覺得 compiler 應該用 compiler option 的方式來讓 programmer 明白地
指示 compiler 應該具有哪些特殊的功能,而 default 的狀況則是盡可能地
符合標準。
--
Jiun-Yao Huang <mailto:jyh...@csie.nctu.edu.tw> Uni\/\/indows
Dep. of Comp. Sci. & Info. Eng., NCTU, Hsin-Chu, Taiwan, R.O.C. WW\/\/etworks
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
達文西的精確 米開朗基羅的氣勢 拉菲爾的純厚 梵谷的熱情 畢卡索的奇巧 達利的狂放
In My Dreams...
這倒沒錯。
唉,最不守規定的,第一就是 Borland (改名為 Inprise 真難聽),
第二則是 Microsoft。大家也許覺得標準很重要,但是多數的廠商並
不這麼認為,這兩家公司早期更是壓根不曉得標準是什麼,因為他們
覺得自己就是標準。另外不妨看一下 PC Magazine 是怎麼評鑑各個
編譯程式的,他們反而覺得有許多 "feature" 是很重要的事。
話說回來,有幾個知道在 for 裡的變數定義不能用在迴圈外面呢?
那些標準也是改來改去的,令人搞不清楚。本來還花了一些時間去注
意 X3J16 的東西,看到 STL, RTTI, string 之後我就再也不理他們
了,覺得頗為白爛,那時許多人去問 Stroustrup ,他也只說一些官
式辭令...
反正乖乖寫程式比較重要,自己後來還不是有事沒事弄個 VM 搞自己
的程式語言來做案子。也就不那麼在意了。
如果我記得沒錯的話,有一些 parser 可以幫忙檢查語法的問題,不
過多半也不夠好。另外,自己曾經寫過一個小 tool 來跑 Visual C++,
Watcom C++, Borland C++ 和 DJGPP 來測試語法問題,後來就丟掉了,
因為只用 Visual C++ 。手上如果有多種編譯程式的話,不妨照樣自
己做個工具來做輔助,不嫌難看的話,用 dos batch 就可以了。
另外,我的感覺是 Watcom 和 Symantec 最乖,有這兩者之一作準就
差不多了。
[m [1;36m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 163.13.93.101] [m