【问题标题】:How can I define a function in C with + (not as a character) in its arguments?如何在 C 中用 + (不是字符)在其参数中定义一个函数?
【发布时间】:2021-03-19 16:21:58
【问题描述】:

我想顺便定义函数calc

calc(num1,num2,+)

返回 num1 + num2

【问题讨论】:

  • 您可以使用enum 来定义功能,例如FUNC_PLUS,但您不能将+ 作为函数参数传递,只能使用'+'
  • 赤裸的+ 是一个运算符,因此只能作为算术表达式的一部分出现,如a + b+z - 它不能出现在像这样的函数参数列表。 Lundin 的方法是你能达到的最好的方法。

标签: c function arguments


【解决方案1】:

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

#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));
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 2021-09-01
    • 2021-07-15
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    相关资源
    最近更新 更多