2017-04-03 81 views
1

Win7のSP1 32ビット、のCode Composer StudioのV6.1(私は彼らgccを使用していると思う)Cの#defineマクロ文字列連結の

私は次の操作を行うための魔法のシ​​ーケンスを取得し、いくつかのトラブルを抱えているように見える...

Iの形式はプリプロセッサ#define指令を記述したいと思います:

(擬似コード)

#define extn(x) extern uint16_t str_#x 

次いで、こうして、それを使用する:

012 「あなたは追加のテキストとマクロ引数を結合し、それをすべて文字列化することはできません

extn(hello); 

は、前処理した後、ウィキペディアでのような...

extern uint16_t str_hello; 

C preprocessor状態をこの記事を結果を見て一緒に。ただし、隣接する文字列定数と文字列化された一連の引数を書くことができる:Cコンパイラはその後、1つの長い文字列に隣接するすべての文字列定数を結合します「あなたの助けのための

おかげで、

マークを

答えて

1

。何が欲しいのは、むしろ文字列化より連結であるため、##を使用します。

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