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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章