2013年11月16日土曜日

C言語のプリプロセッサで文字列化、トークンの連結

たまに使おうとすると忘れてググるシリーズ。

C言語のプリプロセッサでマクロの引数を""で括って文字列化したり、トークンを連結して新たなトークンを作るときには、#や##演算子を使う。

例えば

#define TO_S(a) #a
#define CAT(a1, a2) a1 ## _ ## a2
こんな定義をしておいて、
TO_S(foo)
CAT(bar, baz)
こんな入力をすると
"foo"
bar_baz
こうなる。

0 件のコメント:

コメントを投稿