精華區beta Programming 關於我們 聯絡資訊
※ 引述《gen2linux (晚宴行動如期舉行)》之銘言: : ※ 引述《infboy.bbs@bbs.sayya.org (珍惜, 享受每一天)》之銘言: : : 像是 const int offset=4; 這樣把 offset 設定為固定常數, : : 再用在陣列的 offset 的用法,應是在 C++ 才開始支援的。 : : 我就試著去用 gcc 並加以指定 gcc -std= { c98, c99, c9x, gnu99, gnu9x } : : 都無法編譯成功阿。 : : 在用 g++ 去編譯相同的程式,不用指定 -std=??,就編譯成功了。 : : 我覺得 C 應該還是不能這樣寫,   我發現如果不用 = {0} 來初始陣列的話,   就算沒把 offset 宣告為 const 也可以成功編譯;   但只要一用 = {0} 就沒辦法了,   也許是這種寫法並不被認為是 variable-length array 吧!? : 是不是 c99我不清楚, 不過我很確定這個 feature是 "gcc extension" : 幾年前我也拿 VC6.0 測過同樣語法, 證實是不行的: syntax error : 為什麼我會想測? 因為當時發現linux kernel tree裡有某 driver也是這樣寫...   Variable-length arrays 以前是 GCC 的 extension 沒錯,   但既然 C99 已經將之納入,應該也算是標準了吧,   雖然各家的 C compiler 對 C99 的支援大都還未完整。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.175.165.4