C中不支持可变长度数组C99

use*_*214 4 c variable-length-array

在Visual Studio 2005中,我正在尝试编译.c文件:

int i = 6;
int a[i];
Run Code Online (Sandbox Code Playgroud)

它不起作用,我的编译器遵循哪个标准?

Mys*_*ial 8

Visual Studio仅支持C89/90.他们不支持C99.因此,您无法在Visual Studio中使用可变长度数组.此外,Microsoft没有计划在其C编译器中添加对C99的支持.

  • 至少它无法正确支持1995年增加的宽字符接口; 例如,`wprintf(L"%s \n","hello");`不起作用.我不能想到这些例子,但我很确定一些原始的C89函数也存在重大的不一致性问题,也许还有预处理器的行为. (4认同)
  • @Medinoc:它应该按照C语言的要求将字符串"hello",后跟换行符打印到stdout.你的第一个选择是错误的; `%hs`是一个无效的格式说明符.第二种选择也是错误的.`%s`需要一个指向字符串的指针(以空格终止的`char`数组),而不是指向宽字符串的指针. (3认同)