Rom*_*her 6 c named-parameters
我正在尝试实现灵活的调试宏/函数库,而命名/可选参数似乎是实现这些函数的最佳方式.
有没有更好的方法在c中进行命名参数然后如下?
enum named_args {NAME,ADRESS,AGE,NA_SENTINEL};
void named_arg_initializers(struct person p, enum * named_args)
{
enum named_args * current_name;
enum named_args * current_arg;
...
if(named_args==NULL)
return;
current_name = named_args[0];
current_arg = named_args[1];
while(current_name!=NA_SENTINEL)
{
current_name+=2;
current_arg+=2;
if(current_name==NAME)
p.name=current_arg;
else if(...
...
}
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
Jen*_*edt 21
当然.
struct toto {
unsigned age;
char name[25];
};
void func(struct toto);
...
func((struct toto){ .name = "you", .age = 18 });
Run Code Online (Sandbox Code Playgroud)
或者如果你想要你可以将它包装在一个宏中
#define FUNC(...) func((struct toto){ __VA_ARGS__ })
...
FUNC(.name = "you", .age = 18 );
Run Code Online (Sandbox Code Playgroud)