如何制作一个用于定义函数typedef的C宏?

兰斯·波拉德

我要这样:

typedef int (*PTR_FUN)(int);
typedef int (*PTR_FUN_FUN)(PTR_FUN, PTR_FUN);

并定义如下:

MAKE_FUNCTION_TYPE(PTR_FUN, int, int);
MAKE_FUNCTION_TYPE(PTR_FUN_FUN, PTR_FUN, PTR_FUN, int);

...其中参数的数量是动态的,最后一个参数是返回类型。

如果不可能将最后一个arg作为返回类型,则作为第二个arg。

Nonneneo

您想要的是可变参数宏,它可以接受任意数量的参数。语法为#define MACRO(fixedarg1, fixedarg2, ...)在宏的主体中,您只需使用__VA_ARGS__即可引用所有变量参数。

不幸的是,您不能使最后一个arg为返回类型,因为您必须统一对待整个变量参数块,并且它们必须位于最后。但是,您可以很容易地使第二个arg返回类型:

#define MAKE_FUNCTION_TYPE(name, ret, ...) typedef ret (*name)(__VA_ARGS__)

MAKE_FUNCTION_TYPE(v_i, int);
MAKE_FUNCTION_TYPE(i_v, void, int);
MAKE_FUNCTION_TYPE(ii_cp, char *, int, int);

这相当于

typedef int (*v_i)();
typedef void (*i_v)(int);
typedef char * (*ii_cp)(int, int);

您可以使用检查cc -E

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建一个C ++宏来定义使用调用另一个函数的参数列表的函数?

来自分类Dev

用于定义另一个结构的typedef结构?

来自分类Dev

如何定义使用另一个宏的C宏?

来自分类Dev

如何定义一个宏到一个宏

来自分类Dev

如何定义一个描述内存位置的宏?

来自分类Dev

如何定义一个描述内存位置的宏?

来自分类Dev

在C ++中定义一个'for'循环宏

来自分类Dev

在Common Lisp中定义一个宏,该宏定义一组函数和函数调用

来自分类Dev

C++ 定义了一个宏,它接受一个函数并将其传递给其他函数,这可能吗?

来自分类Dev

我如何制作一个函数来删除C中的双字母?

来自分类Dev

如何制作一个函数来删除C中的双字母?

来自分类Dev

如何制作一个可以处理变量参数和变量类型的C ++函数?

来自分类Dev

如何制作一个返回Type <T>的函数

来自分类Dev

如何用重复代码制作一个函数?

来自分类Dev

如何制作一个返回Type <T>的函数

来自分类Dev

如何制作一个比较字符串的函数?

来自分类Dev

如何制作一个等待某些条件的函数?

来自分类Dev

如何制作一个新的收集结果的函数?

来自分类Dev

如何制作一个适应模型的泛型函数?

来自分类Dev

如何制作一个独立的重复 jQuery 函数

来自分类Dev

C++ typedef 函数指针并在一个语句中声明一个指针

来自分类Dev

如何制作一个每60秒调用另一个函数的函数?

来自分类Dev

如何制作一个无参数的__VA_ARGS__宏?

来自分类Dev

如何用私有子程序制作一个宏?

来自分类Dev

如何制作一个宏来将数据从一个单元传输到各个单元?

来自分类Dev

如何编写一个日志记录函数或宏,该函数或宏可以将调用者的姓名附加到C语言中的日志记录输出中

来自分类Dev

如何定义一个调用闪亮函数的函数?

来自分类Dev

为什么 VS 为我的函数定义了一个宏?

来自分类Dev

如何制作一个可以让我制作元素并将其添加到数组的函数?

Related 相关文章

  1. 1

    如何创建一个C ++宏来定义使用调用另一个函数的参数列表的函数?

  2. 2

    用于定义另一个结构的typedef结构?

  3. 3

    如何定义使用另一个宏的C宏?

  4. 4

    如何定义一个宏到一个宏

  5. 5

    如何定义一个描述内存位置的宏?

  6. 6

    如何定义一个描述内存位置的宏?

  7. 7

    在C ++中定义一个'for'循环宏

  8. 8

    在Common Lisp中定义一个宏,该宏定义一组函数和函数调用

  9. 9

    C++ 定义了一个宏,它接受一个函数并将其传递给其他函数,这可能吗?

  10. 10

    我如何制作一个函数来删除C中的双字母?

  11. 11

    如何制作一个函数来删除C中的双字母?

  12. 12

    如何制作一个可以处理变量参数和变量类型的C ++函数?

  13. 13

    如何制作一个返回Type <T>的函数

  14. 14

    如何用重复代码制作一个函数?

  15. 15

    如何制作一个返回Type <T>的函数

  16. 16

    如何制作一个比较字符串的函数?

  17. 17

    如何制作一个等待某些条件的函数?

  18. 18

    如何制作一个新的收集结果的函数?

  19. 19

    如何制作一个适应模型的泛型函数?

  20. 20

    如何制作一个独立的重复 jQuery 函数

  21. 21

    C++ typedef 函数指针并在一个语句中声明一个指针

  22. 22

    如何制作一个每60秒调用另一个函数的函数?

  23. 23

    如何制作一个无参数的__VA_ARGS__宏?

  24. 24

    如何用私有子程序制作一个宏?

  25. 25

    如何制作一个宏来将数据从一个单元传输到各个单元?

  26. 26

    如何编写一个日志记录函数或宏,该函数或宏可以将调用者的姓名附加到C语言中的日志记录输出中

  27. 27

    如何定义一个调用闪亮函数的函数?

  28. 28

    为什么 VS 为我的函数定义了一个宏?

  29. 29

    如何制作一个可以让我制作元素并将其添加到数组的函数?

热门标签

归档