硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1870|回复: 4
收起左侧

[其它] 请教这个宏要怎么写?

[复制链接]

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2017-10-9 09:09:43 | 显示全部楼层 |阅读模式
1.jpg

请问,A要怎么写,我是这样做的:但是结果不对:
#define        A(x)                x##_B


结果A(VAR1)展开为VAR1_B,这个VAR1并没被展开为X1
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2017-10-9 09:58:49 | 显示全部楼层
应该是这样吧?

#define X1_B 1
#define X2_B 2
#define VAR1 X1
#define VAR2 X2
#define A1(V)   V##_B
#define A(V)    A1(V)
int i = A(VAR1); // = X1_B = 1
int j = A(VAR2); // = X2_B = 2
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2017-10-9 10:06:48 | 显示全部楼层

回 novice 的帖子

novice:我也搞不懂你想表达什么意思,X1是什么?
 (2017-10-09 09:58) 
X1,X2是已知的定义比如寄存器
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2017-10-9 10:17:23 | 显示全部楼层

回 ssis909 的帖子

ssis909:X1,X2是已知的定义比如寄存器 (2017-10-09 10:06)
参考上面
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2017-10-12 09:55:19 | 显示全部楼层
#define   A(a,b)      a##b
#define   C(a)       A(a,_B)

#define VAR1        X1

C(VAR1)    -->   X1_B
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 23:57 , Processed in 0.196667 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表