使用宏使用额外元素初始化数组

Initialize array with extra element using a macro

本文关键字:初始化 数组 元素      更新时间:2023-10-16

我根据宏以两种不同的方式初始化数组:

# if feature_enabled
const int v[4] = {1, 2, 3, 4};
#else
const int v[5] = {0, 1, 2, 3, 4};
#endif

问题是赋值中的数据实际上是大矩阵,由于各种原因,仅通过少量修改复制数据不是一个好的解决方案(只是在数组开头多了一个元素(。

我想知道是否有办法做我在这里所做的同样的事情,而不会基本上复制最后的 n-1 个元素。

如果您没有在数组上指定大小,而是让它自动推断,则可以有条件地在前面添加 0:

const int v[] = {
# if feature_enabled
0,
#endif
1, 2, 3, 4
};

如果需要保持数组大小,则:

# if feature_enabled
const int v[4] = {
#else
const int v[5] = {0,
#endif
1, 2, 3, 4
};