没有constexpr大小的内置数组初始化

时间:2017-01-17 10:12:19

标签: c++ arrays c++11 declaration constexpr

我无法确定如何在不使用constexpr维度的情况下声明内置数组。也就是说,以下块对我来说非常有用。我知道内置数组具有固定大小,必须在编译时通过constexpr大小定义来指定。

int size;
int arr[size];

2 个答案:

答案 0 :(得分:0)

不一定是通过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

答案 1 :(得分:0)

也可以通过这种方式初始化大小为n的数组:

int n = 123;
int* a;
a = new int[n];