我有一个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__);
}
我认为代码可能会因进行一些预处理程序黑客操作而失去可读性,如果唯一的原因就是保存一些类型,那将是最糟糕的情况。
如果这仅仅是“针对自己”编程,那么Jakub的评论中已经指出了一个简单的解决方案:使用简单的宏作为表示参数列表的简短方式。
#define param_list x, y, z
或者,您可以研究GCC编译器扩展的Constructing Calls的工作方式。这与问题中所要求的类似(尽管GCC文档可以防止在不注意的情况下使用此功能)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句