如何将Visual Studio用作可变长度数组(VLA)的IDE?

Per*_*era 1 c c++ visual-studio variable-length-array

在任何适用于C或C ++的常规编译器中,可变长度数组均可正常运行,但在Visual Studio Community 2019中,VLA无法正常运行。我如何以任何方式将Visual Studio用作IDE(因为我喜欢它的功能)并且仍然在C和C ++中具有VLA

我试图更改它使用的编译器。我试图找到migwin编译器,但无法做到。所有在线教程都与我在最新版本的Visual Studio 2019中看到的有所不同。

int n;
cin>>n;
int arr[n]; // This line gives an error
Run Code Online (Sandbox Code Playgroud)

int arr [n]; //此行应在Visual Studio 2019中工作。使用什么编译器都没关系。只是我需要让这件事在VS Community 2019中工作,因为我想将其用作IDE。

Obl*_*ica 5

这个答案是关于C ++的。

可变长度数组不是ISO C ++标准,某些编译器接受它作为扩展。例如gcc

ISO C99允许使用可变长度自动数组,作为扩展,GCC在C90模式和C ++中接受它们。


编辑

只要不改变格式正确的程序的行为,此类扩展仍可以是符合要求的实现。


但是,如果您使用VLA,则您的代码将无法移植,因为其他编译器可能具有也可能没有这种扩展,并且现在只要供应商决定放弃支持,这种扩展就可以停止工作。

如果您在编译时不知道大小,并且想使用C ++,请使用std::vector。您只需将代码更改为:

int n;
cin>>n;
vector<int> arr(n);
Run Code Online (Sandbox Code Playgroud)

但是,无论如何,如果您需要VLA,以下是支持它的编译器列表:在Godbolt运行(带有绿色标记的编译器具有支持)

MSVC不在列表中。因此,您可以在VS中使用clang。这是一个教程。甚至更容易,您可以使用VS2019的开箱即用支持:

在Windows上,安装Clang工具很容易。只需抓住“用于Windows的Clang编译器”,这是“使用C ++进行桌面开发”工作负载的可选组件。这将安装在Windows上使用Clang开发所需的一切。

VS19 lang

  • 某些东西不能既是非法的又是扩展。它是非法的,并且支持它的编译器提供C ++的变体(即,不是标准C ++),或者是合法的(尽管C ++标准不要求,即,它不是格式良好的核心语言的一部分)程序)和扩展名。这个答案并不能说明问题,这与C或C ++不支持或允许的内容有关,而是与将Visual Studio接口与由他们选择的编译器支持的有效语言一起使用有关。 (2认同)

Per*_*era 2

VLA 可用于 C++ 应用程序“CMake 项目”。创建一个新的“CMake 项目”而不是“控制台应用程序”,然后转到左上角菜单中的“项目”并选择最后一个选项(ProjectName 的 CMake 设置)。它将打开一个 json 文件。在“工具集”选项下,单击下拉菜单以选择“Clang”。

VS2019 16.1以上,Clang已经可用。如果不可用,请在 Visual Studio 安装程序中单击“修改”VS2019,然后从 C/C++ 开发工具中选择“Clang tools for windows”。这将安装 Clang。

因此,最主要的是选择“CMake Project”而不是“Console Application”,这通常不会在任何说明中显示。VLA 现在可以在 .cpp 文件中工作,并且 Visual Studio 2019 可以用作支持 VLA 的 IDE。

https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/