![]() |
![]() |
TOP > C言語 > 文字列化演算子とトークン連結演算子 |
![]() |
![]() |
文字列化演算子(#)
展開したマクロ パラメータを文字列定数に変換する。但し、この演算子は引数を取るマクロでのみ使える。マクロ定義でこの演算子を仮パラメータの前に使うと、マクロ呼び出しで渡されるダブルクォーテーションで囲まれ、定数文字列として処理される。
文字列化演算子の例
#inclulde <stdio.h> #define OUT1(s) printf (#s "\n"); int main(int argc, char** argv) { OUT1(aaaaa); OUT1("aaaaa"); return(0); } 出力結果
aaaaa "aaaaa" トークン連結演算子(##)
別個のトークンを結合して 1 つのトークンを作ることができる。マクロ定義の仮パラメータの前か後ろにトークン連結演算子を付けると、この仮パラメータは直ちに展開前の実引数に置き換えられる。つまり、マクロ展開されずに置換だけが行われる。
トークン連結演算子の例
#inclulde <stdio.h> #define ERROR2 "Can not open file!" #define OUT2(s) printf ("Error No"#s":%s\n", ERROR##s); int main(int argc, char** argv) { OUT2(2); return(0); } この例では、以下のように展開される
printf ("Error No"#s":%s\n", ERROR##s); printf ("Error No"#s":%s\n", ERROR2); printf ("Error No2:%s\n", ERROR2); 出力結果
Error No2:Can not open file! |
![]() |
![]() |
Copyright 2007 ためになるホームページ All Rights Reserved. |