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

我想以calc这种方式定义函数:

calc(num1,num2,+)

返回 num1 + num2

回答

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

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

例子:

#include <stdio.h>

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

int main()
{
  printf("%dn", calc(1,1,+));
  printf("%dn", 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("%dn", calc(1,1,add));
  printf("%dn", calc(1,1,sub));
}

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


以上是如何在C中定义一个带有+(不是字符)的函数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>