在编译时初始化数组

时间:2011-04-23 10:57:18

标签: c

foo是必须初始化的全局整数数组。如果将来我将SIZE更改为6,那么我将不得不将两个新的INIT_VALUE项添加到初始化列表中。当SIZE的值发生变化时,是否有一个宏或其他东西可用于在编译时自动修改初始化列表?

#define SIZE 4
#define INIT_VALUE 101

/* global variable that must be initialized */
int foo[SIZE] = {INIT_VALUE, 
                 INIT_VALUE, 
                 INIT_VALUE, 
                 INIT_VALUE};

1 个答案:

答案 0 :(得分:1)

如果此INIT_VALUE不为0,则无法以您提到的方式初始化数组(以支持未知元素)。我认为甚至没有使用宏来实现它的选项,可能正确的方法就是初始化(在函数中)数组的循环(如果你的值没有,memset将无济于事看起来像0xYXYXYXYX(所有字节都相同))