下圖中定義了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