c++ - 哪些编译器支持在运行时固定大小的数组,哪些编译器不支持?
问题描述
我一直在使用用户在输入中询问其大小的数组,例如:
int main(){
int n;
cin>>n;
int arr[n];
}
我从来没有遇到过这种方法的任何问题,但现在我读了很多文章说 C++ 不支持这种语法,因为 C++ 在编译时需要数组大小,或者必须使用new
关键字动态地制作数组。如果上面的代码有人可以说清楚:
- 新编译器支持,旧编译器不支持。如果是,那么在哪个版本之后支持此语法?
- 在堆中动态分配数组还是在堆栈中分配静态内存?
解决方案
我点击了https://godbolt.org/上提供的大多数编译器,似乎只有 Microsoft Visual Studio 编译器拒绝它。多个平台上的 GCC 和 Clang 都可以使用此代码。
请注意,这只是一个额外的支持,两个编译器都可以决定停止接受代码,因为它是非标准的。
该数组将在两个编译器的堆栈上。
推荐阅读
- r - 在集群上运行 R 中的 RStan 作业时,使用过多的内核是否可能会导致内存不足?
- azure - Azure DevOps 发布管道 - 如何使用 Azure Powershell 在管道中的变量中设置和传递值
- arrays - 为什么 bash 数组可以作为查找的选项,而字符串却没有?
- javascript - 如何使用 forEach 迭代数组并更新 Mongoose 中的元素
- php - 使用 get_field('status') 的数据库查询中的字段返回 NULL
- excel - Excel vba检测何时单击任何控件表单
- xhtml - reCAPTCHA 未在 XHTML 文档中正确加载
- c# - C# 在构造函数中从 REST 客户端初始化类属性
- python - 将numpy数组逐块求和以形成一个较小的数组
- python-3.x - pybind11 是否支持'从
进口 ' 样式导入?