如何在 C 语言中定义一个参数中带有 +(不是字符)的函数?

How can I define a function in C with + (not as a character) in its arguments?

我想定义函数 calc 的方式 :

calc(num1,num2,+)

returns num1 + num2

你不能用函数做到这一点,但你可以写一个类似函数的宏:

#define calc(a,b,op) ( (a) op (b) )

示例:

#include <stdio.h>

#define calc(a,b,op) ( (a) op (b) )

int main()
{
  printf("%d\n", calc(1,1,+));
  printf("%d\n", calc(1,1,-));
}

然而,更恰当且类型安全的程序设计将改为使用函数指针模板:

#include <stdio.h>

typedef int opfunc_t (int a, int b);

int calc(int a, int b, opfunc_t* op) { return op(a,b); }
int add (int a, int b) { return a + b; }
int sub (int a, int b) { return a - b; }

int main()
{
  printf("%d\n", calc(1,1,add));
  printf("%d\n", calc(1,1,sub));
}

后一个示例通常是首选方式。