使用带有数组参数的宏在 C 中初始化结构数组

扭矩无摩擦

我正在尝试使用宏来初始化结构数组的所有数组参数,其中一个参数是数组。

我的结构是

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章