获得两个数组的最简单方法具有相同的长度?

时间:2013-10-15 01:27:08

标签: c arrays declare

我的项目中有两个数组。一个是静态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编译器中失败了。那还有其他简单的方法吗?

1 个答案:

答案 0 :(得分: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])];