如何在 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));
}
后一个示例通常是首选方式。
我想定义函数 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));
}
后一个示例通常是首选方式。