如何在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));
}
后一个例子通常是首选方式。