2017-04-03 70 views
1

的Win7 SP1 32位,的Code Composer Studio V6.1(我想他們正在使用gcc)Ç的#define宏字符串concatination

我似乎有一些麻煩讓魔術順序做以下...

我想寫入的格式的預處理器#define指令:

(僞碼)

#define extn(x) extern uint16_t str_#x 

然後使用它,因此:

extn(hello); 

然後預處理後,有結果的樣子......

extern uint16_t str_hello; 

本文在維基百科C preprocessor狀態:

「你不能用其他文字結合了宏參數和字符串化這一切一起。但是,您可以編寫一系列相鄰的字符串常量和字符串化的論點:那麼C編譯器將所有相鄰的字符串常量合併成一個長字符串「

感謝您的幫助,

馬克

回答

1

。你想要的是串聯而不是字符串化因此,使用##

#define extn(x) extern uint16_t str_##x