gpt4 book ai didi

c++ - 我可以在 C++03 和 C++11 中使用 C 可变长度数组吗?

转载 作者:太空狗 更新时间:2023-10-29 19:52:07 25 4
gpt4 key购买 nike

C 有一个非常酷的特性,称为可变长度数组。它在 C90 及更高版本中可用,并且允许将数组的大小推迟到运行时。请参阅 GCC 手册 6.19 Arrays of Variable Length .

我在 C++ 中工作。在 std=c++11 中,由于在 Cygwin 下使用 alloca,我遇到了编译失败。如果可能的话,我想切换到可变长度数组。我也想尝试避免 std::vectorstd::array 因为我想远离内存管理器。我相信一点点帮助,所以我很高兴捕获这些机会(有些人认为是窥视孔)。

我可以在 C++03 和 C++11 中使用可变长度数组吗?

最佳答案

VLA s 不在标准 C++03 或 C++11 中,因此如果您想编写严格符合标准的代码(并使用例如 std::vector,通常使用堆为其数据 - 但你可以使用你自己的分配器......)。

但是,一些 C++ 编译器(最近的 GCCClang )正在接受 VLA 作为扩展。

对于flexible array members也是一样的;它们在 C++ 中不是标准的(仅在 C 中),但一些编译器接受它们。

dynarray -s 没有进入 C++11 标准...

关于c++ - 我可以在 C++03 和 C++11 中使用 C 可变长度数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31645309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com