[問題] 宣告陣列大小可以用變數?

看板C_and_CPP (C/C++)作者 (雲淡風輕)時間16年前 (2009/05/08 10:09), 編輯推噓4(407)
留言11則, 4人參與, 最新討論串1/1
看到前幾篇的內容感到狐疑 記得以前學的都是若你沒先#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

05/08 10:32, , 1F
try -std=c89 -pedantic
05/08 10:32, 1F

05/08 10:32, , 2F
variable length array在c99是合法的
05/08 10:32, 2F

05/08 10:37, , 3F
VC2005不過的原因大概是他把你的code當c++ compile..
05/08 10:37, 3F

05/08 10:38, , 4F
那再問一下 這樣是以後就可以不用動態空間? 只要你能
05/08 10:38, 4F

05/08 10:38, , 5F
事先得到你要的空間大小?
05/08 10:38, 5F

05/08 10:47, , 6F
05/08 10:47, 6F

05/08 10:48, , 7F
VC 會用附檔名判斷使用 C 或 C++ 編譯
05/08 10:48, 7F

05/08 10:48, , 8F
過不了是因為 VC 不支援 C99
05/08 10:48, 8F

05/08 10:50, , 9F
如無必要還是儘量別用 VLA
05/08 10:50, 9F

05/08 10:53, , 10F
感謝 看完那篇就懂了~
05/08 10:53, 10F

05/08 11:59, , 11F
推:)
05/08 11:59, 11F
文章代碼(AID): #1A0vHcg0 (C_and_CPP)
文章代碼(AID): #1A0vHcg0 (C_and_CPP)