2019独角兽企业重金招聘Python工程师标准>>>
下图中定义了2个宏:
等效于文件中:
#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\""
相同的错误:
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");
环境
MDK4.74