→ angleevil:double salaries[staff_size]<--編譯器讓你ok 11/03 15:46
→ angleevil:實際上標準規範不能這樣使用. 11/03 15:47
→ angleevil:說錯了c99以前的規範不准這樣用 11/03 15:47
難怪我記得我以前學的時候好像不行這樣搞XD
4 int main()
5 {
6 int x;
7
8 cin >> x;
9
10 double aaa[x];
11
12 for ( int i = 0; i < x; ++i )
13 {
14 aaa[i] = (double)i;
15 cout << aaa[i] << endl;
16 }
17 }
我剛又測試一下這個code 也是可以跑沒問題
所以現在是run-time決定也都沒問題就是了?
※ 編輯: k0783154 來自: 140.112.4.181 (11/03 15:49)
→ tropical72:建議少這麼做,有一些原因判斷 VLA 是放在 stack, 而非 11/03 15:50
→ tropical72:heap,且吃的 stack 比實際需求還大一些。 11/03 15:51
→ k0783154:VLA是? 11/03 15:52
推 Fenikso:打開warning就會看到compiler跟你抱怨了.. 11/03 15:53
但我剛compile
g++ test.cpp -W
非常安靜耶 沒有warning XDD
→ tropical72:VLA, variable-length array,可變長度陣列. 11/03 15:53
※ 編輯: k0783154 來自: 140.112.4.181 (11/03 15:56)
→ tropical72:裡面提到 gnu-c compiler 把 vla 放在 stack (看實作) 11/03 15:56
→ Fenikso:是-Wall, -W根本沒有功能吧... 11/03 16:05
→ angleevil:實際上打-Wall -Wextra.還是不會跟你抱怨.因為最近的gcc 11/03 16:07
→ angleevil:會支援c99.而c99接受VLA. 不過一些舊版的編譯器會給你 11/03 16:08
→ angleevil:error. 11/03 16:09
推 Fenikso:嗯 上面搞錯 要-pedantic 11/03 16:10
→ angleevil:-w Inhibit all warning messages<--不可以用這個 11/03 16:20
推 purpose:pedantic 好像是最嚴格 11/03 16:38
→ angleevil:-Wall -Wextra -pedantic -Werror<--嚴到你想打編譯器 11/03 16:43
推 xatier:-Werror 很可怕....有 warning 就跟你哭爸不上你過XD 11/03 17:27
→ xatier: 讓 11/03 17:27
→ angleevil:重點是加了-pedantic.一堆警告讓你不知道為何 11/03 17:30
→ xatier:-pedantic 總是抓了一堆非常嚴的警告www 11/03 17:36
推 amozartea:放在global不行吧 11/03 18:37
推 chchwy:你一定是用gcc,拿去visual c++就會爆了 11/03 19:32
→ diabloevagto:我都四種全開,因為看到有warnning就不舒服... 11/03 21:27
→ hilorrk:g++有自己實作支援C99的VLA 但是C++標準並沒有這項 11/04 15:36