2

我正在尝试定义一个堆栈 c 样式数组,其大小取自 const 数组并且在编译时是已知的。

const int size[2]={100, 100};
int ar[size[0]]; //error: expression must have a constant value

它失败。如何修复?

4

3 回答 3

3

“其大小取自 const 数组且在编译时已知的数组”

使用 C++11,您可以:

constexpr int size[2]={100, 100}; // size[0] is Compile-time constant

使用-std=c++11or-std=c++0x编译

于 2013-09-24T14:59:30.257 回答
2

一些选项(具有不同程度的受欢迎程度):

  1. 使用 constexpr(Visual Studio 不支持)
  2. 使用向量
  3. 使用动态分配
  4. 使用const int(C99 或更新版本或 C++)
  5. 使用enum
  6. 使用 MACRO 定义大小(因为它在编译时已知)
于 2013-09-24T15:09:14.140 回答
1

C++ 数组大小必须是常量表达式,而不仅仅是常量数据。数组数据,即使是 const,也不是常量表达式。

数组大小和常量

于 2013-09-24T15:13:40.013 回答