在C语言中通常使用内建宏__VA_ARGS__
来实现不定参,因此可以也可以使用它实现结构体参数的不定参.
实现如下:
#include <stdio.h>
#define func(...) func_vars((struct vars_stu){__VA_ARGS__})
struct vars_stu {
int x;
int y;
int z;
};
void func_vars(struct vars_stu vs) {
printf("x:%d,y:%d,z:%d\n", vs.x, vs.y, vs.z);
}
int main(){
func(1);
func(1,2);
func(1,2,3);
func(.x=1);
func(.y=2);
func(.y=2,.z=3);
return 0;
}