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。
这个答案是关于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开发所需的一切。
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/
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |