看板 C_and_CPP 關於我們 聯絡資訊
看到前幾篇的內容感到狐疑 記得以前學的都是若你沒先#define a 5; 這樣就不能這樣開陣列 int array[a]; 但是今天我使用 #include<stdio.h> #include<stdlib.h> int main() { int i,j,a; scanf("%d",&a); int b[a][a]; for(i=0;i<a;i++) for(j=0;j<a;j++) b[i][j]=i+j; for(i=0;i<a;i++) printf("%d\t",b[i][i]); printf("\n"); return 0; } 這樣卻可以ok? 這是那邊出問題?還是現在支援了? ---- 話說我用gcc 3.4.6測的~ 參數有下 -ansi -std=c99 -std=c89 這樣都會過~ 且會執行 執行結果 [~/temp] > ./t 5 0 2 4 6 8 ---- 請朋友幫忙測 使用visual 2005 卻出現 error C2057: 必須是常數運算式 error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的整數 -- 這是gcc bug??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.188.117
Fenikso:try -std=c89 -pedantic 05/08 10:32
Fenikso:variable length array在c99是合法的 05/08 10:32
Fenikso:VC2005不過的原因大概是他把你的code當c++ compile.. 05/08 10:37
windincloud:那再問一下 這樣是以後就可以不用動態空間? 只要你能 05/08 10:38
windincloud:事先得到你要的空間大小? 05/08 10:38
littleshan: 見 #14XQNUYz 05/08 10:47
littleshan: VC 會用附檔名判斷使用 C 或 C++ 編譯 05/08 10:48
littleshan:過不了是因為 VC 不支援 C99 05/08 10:48
littleshan:如無必要還是儘量別用 VLA 05/08 10:50
windincloud:感謝 看完那篇就懂了~ 05/08 10:53
VictorTom:推:) 05/08 11:59