#defineの#と##の意味
詳細1:
defineの命令フォーマットでは、#はStringizing Operatorであり、上記の例のように、パラメータを文字列に変換することを意味します.
nは「n」に変換する、前のフラグと後のフラグとの間のスペースは無視される.
##はToken-Pasting Operatorであり、define命令では2つのtokenを接続することができる.
例:
link(abc,def)はコンパイラによってプリコンパイルされた後abcdefとなる.
詳細2:
ここで、#define文の#はパラメータを文字列化し、##は2つのパラメータを1つの全体に接続します.define FACTORY_REF(name){#name,Make##name}では#nameが入力したnameを文字列化し,Make##nameはMakeとnameを接続して全体としている.
ステートメント
defineの命令フォーマットでは、#はStringizing Operatorであり、上記の例のように、パラメータを文字列に変換することを意味します.
#define paster(n)
printf("token "#n" = %d", token##n)
nは「n」に変換する、前のフラグと後のフラグとの間のスペースは無視される.
##はToken-Pasting Operatorであり、define命令では2つのtokenを接続することができる.
例:
#define link(a,b) a##b
link(abc,def)はコンパイラによってプリコンパイルされた後abcdefとなる.
詳細2:
ここで、#define文の#はパラメータを文字列化し、##は2つのパラメータを1つの全体に接続します.define FACTORY_REF(name){#name,Make##name}では#nameが入力したnameを文字列化し,Make##nameはMakeとnameを接続して全体としている.
ステートメント
FACTORY_REF(MP3Decoder)
の意味は次のとおりです.{“MP3Decoder”, MakeMP3Decoder}