非常简单的程序在devc++;但不是在VisualStudio中

非常简单的程序在devc++;但不是在VisualStudio中,c,visual-studio-2012,C,Visual Studio 2012,我制作了一个非常简单的程序: int a; scanf("%i", &a); int tab[a]; 当我在DevC++中编译时,程序的其余部分运行良好。但当我使用这个: int a; scanf_s("%i", &a); int tab[a]; 在Visual Studio 2015中存在一个错误。我不知道这有什么不对。 < P>可变长度数组(VLA)是C99标准的一部分,但不是C++ 11/C++ 14标准的一部分,所以它们不是由Vis

我制作了一个非常简单的程序:

   int a;
   scanf("%i", &a);
   int tab[a];
当我在DevC++中编译时,程序的其余部分运行良好。但当我使用这个:

   int a;
   scanf_s("%i", &a);
   int tab[a];
在Visual Studio 2015中存在一个错误。我不知道这有什么不对。

< P>可变长度数组(VLA)是C99标准的一部分,但不是C++ 11/C++ 14标准的一部分,所以它们不是由Visual C++编译器实现的。Visual C++作为C语言编译器,与C++ 11中引用的C11标准库的部分一致。 请注意,这个问题的核心已经得到了回答


Visual Studio中没有VLA。如果您确实需要,可以使用
int*tab=alloca(a*sizeof(*tab)
而不是
int-tab[a]
。别忘了
#包括
VLA=>可变长度数组那么如何从键盘声明选项卡的长度?我指的是scanf_s@Finer通过在第一个注释中提出的建议,@这里还有一个方面需要考虑:这被标记为“C”。问题,但是根据你处理的C++标准,你在编译C++中的编译成功只能通过扩展来实现;如果选择编译为“C”(你也可以在C++中工作),你将有其他的可能性。