gpt4 book ai didi

c - 在 C 的宏中使用宏的名称

转载 作者:行者123 更新时间:2023-12-02 07:21:58 24 4
gpt4 key购买 nike

#define V_M1 10
#define A_M1 60
#define V_M2 15
#define A_M2 56

#define M1 { V_M1, A_M1 }
#define M2 { V_M2, A_M2 }
int m1[]=M1, m2[]=M2;

有没有一种方法可以简化 M1 和 M2 宏的定义,这样我就不必在内部重复它们的名称(由于宏的实际复杂性,我的错误来源)?像这样的东西:

#define M1 { V_MyOwnName, A_MyOwnName }
#define M2 { V_MyOwnName, A_MyOwnName }

最佳答案

使用类似函数的宏添加一个间接级别

#define EXPAND(name) { V_##name, A_##name }
#define M1 EXPAND(M1)
#define M2 EXPAND(M2)

## 是 token 连接运算符,它将 V 和您传递的任何内容作为 name 并将它们粘合在一起以形成单个 token .如果结果是另一个宏,它会进一步扩展。

关于c - 在 C 的宏中使用宏的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43232032/

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