是否有一个C预处理程序宏来获取功能参数列表?

smichak

我有一个C函数,将其参数委托给另一个函数。我想避免在委托函数的调用站点中显式编写这些参数。有没有办法(通过我假设的预处理器宏)获取参数列表(没有它们的类型说明符)?

例:

extern g(int x, float y, char *z);

void f(int x, float y, char *z)
{
    ...
    g(x, y, z);
}

所以我想这样写f的实现:

void f(int x, float y, char *z)
{
    ...
    g(__params_list__);
}
pablo1977

我认为代码可能会因进行一些预处理程序黑客操作而失去可读性,如果唯一的原因就是保存一些类型,那将是最糟糕的情况。

如果这仅仅是“针对自己”编程,那么Jakub的评论中已经指出了一个简单的解决方案:使用简单的宏作为表示参数列表的简短方式。

  #define param_list   x, y, z

或者,您可以研究GCC编译器扩展的Constructing Calls的工作方式。这与问题中所要求的类似(尽管GCC文档可以防止在不注意的情况下使用此功能)。

拨打电话(GCC)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否有一个预处理程序宏来防止其他宏在C ++中包含私有标头?

来自分类Dev

具有2个参数的C ++预处理宏

来自分类Dev

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

来自分类Dev

C / C ++:预处理器指令应如何在宏参数列表上工作?

来自分类Dev

为另一个宏生成名称(C预处理程序)

来自分类Dev

C预处理程序宏多个参数

来自分类Dev

有没有一种方法可以强制C预处理程序在宏之前评估宏参数

来自分类Dev

C#Rest API仅获取第一个值参数列表

来自分类Dev

是否有一种方便,可维护的方法来从函数内部获取实际参数列表?

来自分类Dev

在同一命令中分配两个C预处理程序宏

来自分类Dev

创建一个Rails插件来预处理资产

来自分类Dev

C预处理程序:及早评估宏

来自分类Dev

C预处理程序宏扩展串联

来自分类Dev

C预处理程序宏扩展串联

来自分类Dev

Spring JPA查询检查参数列表中是否至少存在一个列表元素

来自分类Dev

#在Objective-C的另一个文件中定义全局预处理程序指令

来自分类Dev

在扩展宏之前是否处理了预处理程序指令?

来自分类Dev

是否像C语言一样在fortran中有预处理程序指令?

来自分类Dev

编译器是否从另一个通用参数列表中找出一个?

来自分类Dev

在##运算符的存在下,可变参数GNU C预处理程序宏的惊人扩展

来自分类Dev

是否有一个标准名称(模板或宏)来代替ARRAY_SIZE,_countof等?

来自分类Dev

是否有一个rxjs运算符来获取一个可观测值列表并一次订阅N直到所有操作完成?

来自分类Dev

重载{zero,one}参数的预处理程序宏

来自分类Dev

这是检查可变参数宏参数列表是否为空的有效方法吗?

来自分类Dev

#if预处理程序宏是否在Objective-C的幕后“运行” #ifdef?

来自分类Dev

带有一个参数的python 3函数返回整数列表

来自分类Dev

我可以验证预处理器宏以确保它是一个数字吗?

来自分类Dev

如何使用另一个定义使 if/else 预处理器宏无效?

来自分类Dev

创建一个变量参数列表

Related 相关文章

  1. 1

    是否有一个预处理程序宏来防止其他宏在C ++中包含私有标头?

  2. 2

    具有2个参数的C ++预处理宏

  3. 3

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

  4. 4

    C / C ++:预处理器指令应如何在宏参数列表上工作?

  5. 5

    为另一个宏生成名称(C预处理程序)

  6. 6

    C预处理程序宏多个参数

  7. 7

    有没有一种方法可以强制C预处理程序在宏之前评估宏参数

  8. 8

    C#Rest API仅获取第一个值参数列表

  9. 9

    是否有一种方便,可维护的方法来从函数内部获取实际参数列表?

  10. 10

    在同一命令中分配两个C预处理程序宏

  11. 11

    创建一个Rails插件来预处理资产

  12. 12

    C预处理程序:及早评估宏

  13. 13

    C预处理程序宏扩展串联

  14. 14

    C预处理程序宏扩展串联

  15. 15

    Spring JPA查询检查参数列表中是否至少存在一个列表元素

  16. 16

    #在Objective-C的另一个文件中定义全局预处理程序指令

  17. 17

    在扩展宏之前是否处理了预处理程序指令?

  18. 18

    是否像C语言一样在fortran中有预处理程序指令?

  19. 19

    编译器是否从另一个通用参数列表中找出一个?

  20. 20

    在##运算符的存在下,可变参数GNU C预处理程序宏的惊人扩展

  21. 21

    是否有一个标准名称(模板或宏)来代替ARRAY_SIZE,_countof等?

  22. 22

    是否有一个rxjs运算符来获取一个可观测值列表并一次订阅N直到所有操作完成?

  23. 23

    重载{zero,one}参数的预处理程序宏

  24. 24

    这是检查可变参数宏参数列表是否为空的有效方法吗?

  25. 25

    #if预处理程序宏是否在Objective-C的幕后“运行” #ifdef?

  26. 26

    带有一个参数的python 3函数返回整数列表

  27. 27

    我可以验证预处理器宏以确保它是一个数字吗?

  28. 28

    如何使用另一个定义使 if/else 预处理器宏无效?

  29. 29

    创建一个变量参数列表

热门标签

归档