【发布时间】:2014-12-29 15:26:43
【问题描述】:
我从书中读到:《C Primer Plus》,它告诉我在 C99 标准中,可以使用以下语法:
int b=4;
char a[b];
但是当我将此代码放入 vs2013 时,它告诉我“表达式必须具有恒定值”。
这本书有错吗?还是有一些我不知道的关于 vs2013 的新功能?
【问题讨论】:
-
malloc通常用于动态调整数组大小。 -
Visual Studio 因不正确支持 C 而闻名。
-
VS2013 不是 C 编译器。
-
微软仍然只支持C89/C90,不支持C99,也不支持C11。
-
Microsoft 目前在 Visual Studio 2013 中支持 C99 标准的子集,而可变长度数组是缺失的部分之一。如果需要运行时大小,您可以使用 C 预处理器定义这是编译时已知大小还是内存分配(
malloc()、alloc()等)。另请参阅why is alloca not considered good practice
标签: c arrays visual-studio-2013 c99 c11