foo.c に次のコードがある場合
#define P(x) printf("%s\n", #x)
void main() {
P(3 == 4);
}
gcc -E foo.c を呼び出すと、次のように出力されます。
int main() {
printf("%s\n", "3 == 4");
}
# 演算子がマクロ引数 x のリテラルを文字列化したことに注意してください。しかし、/usr/bin/cpp を呼び出すと、次のように表示され、正しく展開されません。
int main() {
printf("%s\n", #3 == 4);
}