gpt4 book ai didi

c - (C99)在不同的宏中扩展一个宏

转载 作者:太空狗 更新时间:2023-10-29 15:26:17 28 4
gpt4 key购买 nike

我的程序中有一个函数接受 3 个参数。有时在代码中有一个定义其中 2 个参数的宏。

所以这样:

void func(int x, int y, int z){...}

可以这样调用:

#define PAR 10,20
int z = 3;
func(PAR, z);

现在,我需要更改我的代码,以便像调用另一个函数的宏一样调用该函数。

#define func(X,Y,Z) func2(X,Y,Z,#Z)

如果 X 和 Y 确实作为变量传递,则此方法工作正常。有什么方法可以让它也与宏 PAR 一起工作吗?

我正在使用 GCC 4.6

最佳答案

您可以使用额外的间接级别(ab)使用可变参数来做到这一点宏:

#include <stdio.h>
#define PAR 2,3
#define F(...) G(__VA_ARGS__)
#define G(a,b,c) H(a,b,c)
void H(int a, int b, int c) {
printf("%d %d %d\n", a , b, c);
}
int main() {
F(PAR, 42);
return 0;
}

潜在问题可能有更好的解决方案。

关于c - (C99)在不同的宏中扩展一个宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907499/

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