【发布时间】:2020-02-16 03:51:41
【问题描述】:
在 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
int arr[n]; //这行应该在Visual Studio 2019中可以工作,没关系 它使用什么编译器。只是我需要让这个东西在 VS Community 2019 中工作 因为我想把它用作 IDE。
【问题讨论】:
-
这看起来像是一个 xy 问题。为什么不直接使用
std::vector呢? -
这不依赖于 Visual Studio(完全),而是依赖于编译器。 CL不支持这个,但是支持更大的功率
_alloca所以你可以使用int* arr = (int*)_alloca(n * sizeof(int))(当然你需要检查n的值)。 vs2019 还支持 clang 编译器工具集。可能与 clang (vla) 一起工作 -
any normal compiler for C or C++你确定吗?绝对 C++98 或 C89 编译器不会支持它。并且 MSVC、GCC、Clang、ICC 并不是世界上唯一的编译器。此外 VLA 不太好,以至于在 C11 中不再是强制性的 -
@RbMm 在 Linux 上是
alloca。但见Why is the use of alloca() not considered good practice? -
@phuclv - 我知道这一点,但不同意使用
alloca总是不好。对于小内存分配(在用户模式下最多几个 kb) - 最好的。然而,这是最接近 vla,分配也在堆栈中
标签: c++ c visual-studio variable-length-array