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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

下图中定义了2个宏:

KEIL MDK工程中的宏定义:字符,值,字符串_第1张图片

等效于文件中:

#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\""

相同的错误:

KEIL MDK工程中的宏定义:字符,值,字符串_第2张图片

 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

你可能感兴趣的:(python,嵌入式)