如何在MS Visual C++中啓用使用VLA,C99中定義的可變長度數組或者根本不可能?在MS Visual C++中啓用VLAs(可變長度數組)?
是的,我知道C++標準是基於C89,並且在C89標準中沒有可用的VLA,因此在C++中不可用,但MSVC++也應該是C編譯器,也可以是使用/ TC編譯器參數(Compile as C Code (/TC)
)開啓。但是這樣做似乎並沒有啓用VLA,並且編譯過程在構建C++時(Compile as C++ Code (/TP)
)以相同的錯誤失敗。也許MSVC++ C編譯器只與C89兼容,或者我缺少一些東西(一些特殊的構造或編譯指示/定義)?
代碼示例:
#include <stdlib.h>
int main(int argc, char **argv)
{
char pc[argc+5];
/* do something useful with pc */
return EXIT_SUCCESS;
}
編譯錯誤:
錯誤C2057:預期常量表達式
錯誤C2466:不能分配恆定大小的數組0
錯誤C2133 :'pc':未知尺寸
不僅如此,它可能永遠不會:http://connect.microsoft.com/VisualStudio/feedback/details/333273/request-for-c99-vla-in-visual-studio太糟糕了。 – 2011-03-09 14:12:04
然後解決爭端。 :-)是否有對啓用VLA的語言進行微軟擴展?海灣合作委員會有一個,從而使他們的C90和C++,除了C99合規。 http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html – Shinnok 2011-03-09 14:18:39
我認爲John提供的鏈接表明沒有,也不會很快。 – 2011-03-09 14:19:45