マクロ置き換え演算子

http://itref.fc2web.com/c/preprocessor.html



#演算子は、マクロ実引数を文字列化します。

#define strgen1(x) "x"
#define strgen2(x) x
#define strgen3(x) #x

char* string = "abc";

char* p = strgen1(string); /* p = "x"      */
char* p = strgen2(string); /* p = "abc"    */
char* p = strgen3(string); /* p = "string" */




下記の例の場合、"main-" "func" ".c" が文字列連結されて、"main-func.c" となります。

#define PREFIX "main-"
#define SUFFIX ".c"
#define fname(name) PREFIX #name SUFFIX

char* p = fname(func); /* p = "main-func.c" */




##演算子は、前後の字句列を結合します。

#define symadd(x, y)  sym##x + sym##y

int sym1, sym2;
int i = symadd(1, 2); /* sym1 + sym2 */
最終更新:2012年04月25日 09:01
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。