KEIL MDK工程中的宏定义:字符,值,字符串

下图中定义了2个宏:

ede797f0ffca8ae58ce1f3912d43a61de9b.jpg

等效于文件中:

#define MCU_FLASH_LESSTHAN_64K 
#define VERSION_INFO_hw 'a'  // MDK :VERSION_INFO_hw="'a'"

  即MDK中的VERSION_INFO_hw="'a'"  和 #define VERSION_INFO_hw 'a' 等效

MDK中另外的测试:

MDK:
VERSION_INFO_hw='a'
VERSION_INFO_hw="a"
VERSION_INFO_hw=a
VERSION_INFO_hw='"a"'

和 

#define VERSION_INFO_hw  a

效果相同

 

MDK以下定义会报错

VERSION_INFO_hw=""a""
"VERSION_INFO_hw"="\"ABC\""
VERSION_INFO_hw="\"ABC\""

相同的错误:

206a6c5b6dfc8063f47bc2bb56054dc9ffa.jpg

 MDK中怎样定义字符串如“ABC"

#define TEST_STR "abc"

试了多种都不能直接定义,但可以用嵌套的方法解决

#define _TOSTRING(s)         #s
#define TOSTRING(s)          _TOSTRING(s)


// MDK工程中定义: VERSION_INFO_hw="abc ABC"
printf("%s", TOSTRING(VERSION_INFO_hw));
//预编译后是期望的结果:
	printf("%s", "abc ABC");

// ============= 另外两种不是想要的结果 =============
printf("%s", VERSION_INFO_hw);
printf("%s", _TOSTRING(VERSION_INFO_hw));
//预编译后不是期望的结果:
	printf("%s", abc ABC);
	printf("%s", "VERSION_INFO_hw");

9db54684a35d4e81106746ee079584fce1e.jpg

 

 

环境

 MDK4.74

转载于:https://my.oschina.net/SamXIAO/blog/2877705

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值