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