2011-10-24 64 views
4

在Visual Studio 2005的支持,我嘗試編譯.c文件:變長數組C99不是在C

int i = 6; 
int a[i]; 

它不工作,因此其標準沒有我的編譯器遵循?

+0

解決方法是使用'malloc()' - 它的優點是可以讓您檢測分配失敗。 –

+0

我正在閱讀一本遵循C89/C99標準的書。我應該買一本新書嗎?我也不瞭解gcc。 – user103214

+1

這是哪本書? C99標準當然值得了解,但微軟採用它特別慢。最好意識到哪些功能是C90中的新功能,哪些是C90中的(幾乎所有編譯器都支持)。 –

回答

7

Visual Studio只支持C89/90。他們不支持C99。因此,您不能在Visual Studio中使用可變長度數組。此外,微軟並沒有計劃在他們的C編譯器中增加對C99的支持。

+0

VS甚至不支持C89。它支持MS的一些混蛋MS卡住... –

+0

@R:真的嗎?據我所知,它對C89/C90標準有相當不錯的支持(儘管你必須給它一些非默認選項)。 –

+3

至少它不能正確支持1995年添加的寬字符接口;例如'wprintf(L「%s \ n」,「hello」);'不起作用。我無法馬上想到這些例子,但我確信一些原始的C89函數也存在重大的不符合性問題,並且可能與預處理器的行爲有關。 –