Marco-Stringification

1
2
3
4
5
6
7
8
9
10
#define xstr(s) str(s)
#define str(s) #s
#define foo 4

str (foo)
==> "foo"
xstr (foo)
==> xstr (4)
==> str (4)
==> "4"

str() 會將參數直接字串化,不做展開。
xstr(s) 會先展開 s,因此 str() 拿到的是已展開的參數。

Ref: 3.4 Stringification