主题 : UBOOT中 对 MK_STR 宏 有点疑问,请大家看看 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 31364
精华: 0
发帖: 59
金钱: 295 两
威望: 59 点
综合积分: 118 分
注册时间: 2010-10-29
最后登录: 2017-09-13
楼主  发表于: 2010-11-05 12:10

 UBOOT中 对 MK_STR 宏 有点疑问,请大家看看

#define XMK_STR(x)    #x
#define MK_STR(x)    XMK_STR(x)

首先我知道这个宏是用来把x转换成字符串。
我的疑问是 :
1.如果使用这两个宏,是没有问题的。
#define CONFIG_BAUDRATE   115200
unsigned char a[]=MK_STR(CONFIG_BAUDRATE);
printf("a:%s\n", a);
输出 a:115200

2.如果改成用一个宏实现
#define MK_STR(x)    #x
则输出 a:CONFIG_BAUDRATE

怎么会这样呢?    请各位赐教。
我在虚拟机下fedora 8测试的
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-11-05 13:32
宏在预编译时只展开一次
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 31364
精华: 0
发帖: 59
金钱: 295 两
威望: 59 点
综合积分: 118 分
注册时间: 2010-10-29
最后登录: 2017-09-13
2楼  发表于: 2010-11-05 13:56
谢谢