一种在C中模拟命名参数的方法

时间:2018-01-15 14:09:53

标签: python c

有没有办法在C函数中使用命名参数?

类似于原型void foo(int a, int b, int c);

的函数

我想用foo(a=2, c=3, b=1); [替换b & c的顺序并使用他们的名字来区分]

动机:我想要一个更多的Pythonic C,我可以轻松地操作我的函数参数而不会错误地混合它们

2 个答案:

答案 0 :(得分:10)

有点,sorta,带有复合文字和指定的初始值设定项:

typedef struct foo_args {
  int a;
  int b;
  int c;
} foo_args;

// Later

foo(&(foo_args) {
  .a = 2,
  .c = 3,
  .b = 1
});

但老实说,我不会打扰。它要求你弯曲函数定义以接受指针,并使其调用变得麻烦。

答案 1 :(得分:3)

C中不支持命名参数。

所有参数必须以正确的顺序传递。