我正在尝试使用宏来初始化结构数组的所有数组参数,其中一个参数是数组。
我的结构是
typedef struct
{
int size_parts;
int *parts;
int width;
int length;
} parts_struct;
我的宏定义为
#define SET_ARRAY_INPUT(_width, _length, ...) {width:_width, length:_length, parts:{__VA_ARGS__}, size_parts:(sizeof((int[]){__VA_ARGS__})/sizeof(int))}
我的数组被初始化为
static parts_struct parts[] = {
SET_ARRAY_INPUT(2, 3, 9354, 39458, 3294),
SET_ARRAY_INPUT(4, 2, 9354, 3294)
}
然而,这总是失败,我不断收到错误“错误:类型标量初始值设定项周围的括号”。任何帮助将不胜感激。
在你的宏中,你试图初始化一个像数组一样的指针:
parts:{__VA_ARGS__}
您需要为此添加复合文字语法:
parts:(int []){__VA_ARGS__}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句