在c中是否有一种干净的方法可以使一个函数使用不同的参数调用其他函数?

威廉·埃弗里特

我正在为一个库编写接口,并且有很多看起来像这样的代码块:

result = library_function(arg1, arg2, arg3,...,argn);
printf("library_function result: %s", result_to_string(result));

我真的很想能够做更多类似的事情:

function_caller(&library_function, arg1, arg2, arg3,...,argn);

或者

function_caller(&library_function(arg1, arg2, arg3,...,argn));

我知道如何设置指向另一个函数的指针,但不知道如何解析未知数量的未知类型的参数。我可以通过类型转换来做到这一点,但是这比当前的情况更具吸引力,我承认这种情况并不可怕,只是看起来很丑陋。

迪特里希·埃普

叹气1除非您知道参数类型,否则可以使用宏执行此操作。

#define function_caller(func, ...) do { \
    result = func(__VA_ARGS__); \
    printf("%s result: %s\n", #func, result_to_string(result)); \
} while (0)

您可以这样使用它:

function_caller(library_function, arg1, arg2, arg3, arg4);

还有其他方法可以执行此操作,但是它们非常不可移植。该宏需要C99。如今,无处不在的C99支持,但是尽管该标准已经过时,MSVC仍然缺乏C99支持。

1 “ Sigh”,因为我建议使用宏。通常应避免使用宏,并且宏可能导致难以阅读的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种简单的方法可以使用 jQuery 在事件中调用内部函数?

来自分类Dev

使用Control.Lens中的多个Getter调用函数的一种干净方法是什么。

来自分类Dev

android studio中有没有一种方法可以从其他几个活动中调用一个活动?

来自分类Dev

有没有一种方法可以用一个类型声明多个函数参数?

来自分类Dev

有没有一种方法可以限制一个函数在PyGame中可以被调用多少次?

来自分类Dev

如何构造一个类型特征,以判断一个类型的私有方法是否可以在另一种类型的构造函数中调用?

来自分类Dev

有没有一种方法可以保存带有参数的函数调用?

来自分类Dev

有没有一种方法可以保存带有参数的函数调用?

来自分类Dev

有没有一种方法可以将所有参数粘贴到一个函数中?

来自分类Dev

是否有一种简单的方法来将if语句压缩为一个函数以检查参数?

来自分类Dev

有没有一种方法可以使用按钮(Tkinter)来一次调用一个元组一个索引?

来自分类Dev

有没有一种方法可以使jQuery的.on()函数与promises配合使用?

来自分类Dev

有没有一种方法可以使构造函数接受两种可能的参数类型?

来自分类Dev

在ada编程语言中,是否有一种方法可以创建一个采用不同类型的枚举的子类型?

来自分类Dev

有没有一种技术可以用来使用调用函数的参数来调用函数?

来自分类Dev

在 Scala 中,是否有一种简单的方法可以根据函数的结果获取不同的元素列表?

来自分类Dev

定义一个内联函数来调用其他函数是否有意义?

来自分类Dev

是否有一种方法可以使用不同的环境配置文件进行基于Ionic Framework的Cordova应用程序的开发和生产设置

来自分类Dev

如何使用不同的参数类型调用一个函数

来自分类Dev

有没有一种方法可以使用gnuplot在一个图形上使用3个不同的Y轴?

来自分类Dev

有没有一种方法可以过滤R中函数调用的结果?

来自分类Dev

有没有一种方法可以过滤R中函数调用的结果?

来自分类Dev

有一种简单的方法可以在python函数中具有可选的输出参数吗?

来自分类Dev

有一种简单的方法可以在python函数中具有可选的输出参数吗?

来自分类Dev

C ++有没有一种方法可以对同一参数使用不同的类型来初始化类?

来自分类Dev

有没有一种干净的方法来定义一个Java接口方法,该方法的每个实现类具有不同的参数?

来自分类Dev

有没有一种方法可以typedef函数来修改C中的参数?

来自分类Dev

有没有一种方法可以使用FC命令显示两个文件不同的确切位置?或在Windows中比较2个文件的任何其他好方法?

来自分类Dev

有没有一种方法可以检查函数是否在python中是递归的?

Related 相关文章

  1. 1

    有没有一种简单的方法可以使用 jQuery 在事件中调用内部函数?

  2. 2

    使用Control.Lens中的多个Getter调用函数的一种干净方法是什么。

  3. 3

    android studio中有没有一种方法可以从其他几个活动中调用一个活动?

  4. 4

    有没有一种方法可以用一个类型声明多个函数参数?

  5. 5

    有没有一种方法可以限制一个函数在PyGame中可以被调用多少次?

  6. 6

    如何构造一个类型特征,以判断一个类型的私有方法是否可以在另一种类型的构造函数中调用?

  7. 7

    有没有一种方法可以保存带有参数的函数调用?

  8. 8

    有没有一种方法可以保存带有参数的函数调用?

  9. 9

    有没有一种方法可以将所有参数粘贴到一个函数中?

  10. 10

    是否有一种简单的方法来将if语句压缩为一个函数以检查参数?

  11. 11

    有没有一种方法可以使用按钮(Tkinter)来一次调用一个元组一个索引?

  12. 12

    有没有一种方法可以使jQuery的.on()函数与promises配合使用?

  13. 13

    有没有一种方法可以使构造函数接受两种可能的参数类型?

  14. 14

    在ada编程语言中,是否有一种方法可以创建一个采用不同类型的枚举的子类型?

  15. 15

    有没有一种技术可以用来使用调用函数的参数来调用函数?

  16. 16

    在 Scala 中,是否有一种简单的方法可以根据函数的结果获取不同的元素列表?

  17. 17

    定义一个内联函数来调用其他函数是否有意义?

  18. 18

    是否有一种方法可以使用不同的环境配置文件进行基于Ionic Framework的Cordova应用程序的开发和生产设置

  19. 19

    如何使用不同的参数类型调用一个函数

  20. 20

    有没有一种方法可以使用gnuplot在一个图形上使用3个不同的Y轴?

  21. 21

    有没有一种方法可以过滤R中函数调用的结果?

  22. 22

    有没有一种方法可以过滤R中函数调用的结果?

  23. 23

    有一种简单的方法可以在python函数中具有可选的输出参数吗?

  24. 24

    有一种简单的方法可以在python函数中具有可选的输出参数吗?

  25. 25

    C ++有没有一种方法可以对同一参数使用不同的类型来初始化类?

  26. 26

    有没有一种干净的方法来定义一个Java接口方法,该方法的每个实现类具有不同的参数?

  27. 27

    有没有一种方法可以typedef函数来修改C中的参数?

  28. 28

    有没有一种方法可以使用FC命令显示两个文件不同的确切位置?或在Windows中比较2个文件的任何其他好方法?

  29. 29

    有没有一种方法可以检查函数是否在python中是递归的?

热门标签

归档