gpt4 book ai didi

c - 是否有用于获取函数参数列表的 C 预处理器宏?

转载 作者:行者123 更新时间:2023-12-05 01:26:23 25 4
gpt4 key购买 nike

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

例子:

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 文档防止不小心使用此功能)。

Constructing Calls (GCC)

关于c - 是否有用于获取函数参数列表的 C 预处理器宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25038847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com