我想生成一个具有任意逻辑的数组初始值设定项,不幸的是需要一些循环。
#define RANDOM_ARRAY(n) \
...
double array[] = RANDOM_ARRAY(10);
假设上面的代码生成一个 10 元素数组的初始值设定项。是否可以在 C99 中定义这样的宏(带有循环)?
NB: it doesn't have to be a macro if a function call could suffice (but it has to be possible to call it among global initializers, not in a second function);
不幸的是,不可能在 C 中创建递归(或循环)宏函数。不过,如果您的初始值设定项有合理的最大长度,则可以使用这种类型的构造:
#define INITIALIZER(N) { INITIALIZER_ ## N }
#define INITIALIZER_1 1
#define INITIALIZER_2 INITIALIZER_1, 2
#define INITIALIZER_3 INITIALIZER_2, 3
int
main(void)
{
int tab[3] = INITIALIZER(3);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)