文字化演算子

昨日のVCのfor each拡張で思い出した。
VCには、プリプロセス時に引数を文字化する演算子 #@ が存在する。

#define C(X) #@X

int main(int argc, char *argv[])
{
  printf("%c\n", C(A)); // 'A'を出力
  return 0;
}

標準規格内で、最も近い効果を得るには、以下のようになると思うが、文字定数が必要な場面では使えない。

#define C(X) *#@X

int main(int argc, char *argv[])
{
  printf("%c\n", C(A)); // 'A'を出力
  return 0;
}

忘れないうちに、メモしておく。