0

我的项目中有两个数组。一种是静态 const 类型,在不同项目中包含或多或少的条目,例如

static const array_A[] = { ... };

我不喜欢这种风格,array_A[N] = { ... }因为我不想手动计算数组的长度。

还有另一个数组 B,其长度要求与 A 相同。

一些编译器(例如 armcc)支持以下技巧

const int N = sizeof(array_A) / sizeof(array_A[0])
static const array_B[N];

但是这个技巧在 gcc 编译器上失败了。那么还有其他简单的方法吗?

4

1 回答 1

1

有趣的是:

int a[] = {1, 2, 3};
const int N = sizeof(a)/sizeof(a[0]);
const int b[N];

使用 clang 编译,不使用 gcc 4.2.1 编译:

error: variably modified ‘b’ at file scope

OP 要求使用 C,而不是 C++,因此对 gcc 的修复是

int a[] = {1, 2, 3};
const int b[sizeof(a)/sizeof(a[0])];
于 2013-10-15T01:36:59.210 回答