gpt4 book ai didi

c++ - C/C++ 中的可变参数函数和参数赋值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:51 26 4
gpt4 key购买 nike

我想知道在 C/C++ 语言中是否可以将参数以键值形式传递给函数。例如在 python 中你可以这样做:

def some_function(arg0 = "default_value", arg1):
# (...)

value1 = "passed_value"
some_function(arg1 = value1)

因此 C 中的替代代码可能如下所示:

void some_function(char *arg0 = "default_value", char *arg1)
{
;
}

int main()
{
char *value1 = "passed_value";
some_function(arg1 = value1);
return(0);
}

所以在 some_function 中使用的参数是:

arg0 = "default_value"

arg1 = "passed_value"

有什么想法吗?

最佳答案

这是一个使用复合文字和可变参数宏的 C99 解决方案:

#include <stdio.h>

#define some_func(...) some_func_((struct some_func_args_){ __VA_ARGS__ })

struct some_func_args_
{
const char *arg1;
const char *arg2;
};

static void some_func_(struct some_func_args_ args)
{
if(!args.arg1) args.arg1 = "default";
printf("---\narg1 = %s\narg2 = %s\n", args.arg1, args.arg2);
}

int main(void)
{
some_func("foo", "bar");
some_func(.arg1 = "spam");
some_func(.arg2 = "eggs");
return 0;
}

关于c++ - C/C++ 中的可变参数函数和参数赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2826128/

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