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