gpt4 book ai didi

c - 有没有更好的方法来做 c 命名参数?

转载 作者:太空狗 更新时间:2023-10-29 17:15:15 27 4
gpt4 key购买 nike

我正在尝试实现一个灵活的调试宏/函数库,命名/可选参数似乎是实现这些函数的最佳方式。

有没有更好的方法在 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(...
...
}
...
}
...
}

最佳答案

当然可以。

struct toto {
unsigned age;
char name[25];
};

void func(struct toto);

...

func((struct toto){ .name = "you", .age = 18 });

或者如果你愿意,你可以将它包装在一个宏中

#define FUNC(...) func((struct toto){ __VA_ARGS__ })
...
FUNC(.name = "you", .age = 18 );

关于c - 有没有更好的方法来做 c 命名参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com