我想知道在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中使用的参数为:

有任何想法吗?

最佳答案

这是一个使用复合文字和可变参数宏的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/

10-13 00:46