【发布时间】:2017-06-01 08:25:47
【问题描述】:
我无法弄清楚如何在不使用constexpr 维度的情况下声明内置数组。也就是说,以下块对我来说非常有用。我知道内置数组具有固定大小,必须在编译时通过constexpr 定义大小来指定。
int size;
int arr[size];
【问题讨论】:
标签: c++ arrays c++11 declaration constexpr
我无法弄清楚如何在不使用constexpr 维度的情况下声明内置数组。也就是说,以下块对我来说非常有用。我知道内置数组具有固定大小,必须在编译时通过constexpr 定义大小来指定。
int size;
int arr[size];
【问题讨论】:
标签: c++ arrays c++11 declaration constexpr
不一定是通过constexpr,那是从 C++11 引入的东西。
你可以通过一个简单的数字来分配大小
int arr[12];
或常数
int const size = 7;
int arr[size];
或 C 风格的宏
#DEFINE size 5
int arr[size];
但你是对的:下面的代码
int size = 11;
int arr[size];
不是正确的 C++。
但是在某些版本的 C 中是合法的(如果我没记错的话,仅在 C99 中)并且 C++ 编译器通常也是 C 编译器。所以通常是宽容的。
您可以尝试使用特定选项进行编译,以对语言进行严格检查;例如,对于 g++ 和 clang++,我使用 -ansi -pedantic
【讨论】:
也可以这样初始化大小为n的数组:
int n = 123;
int* a;
a = new int[n];
【讨论】: