プログラミング言語 C の新機能 Part XXXII: CPP#7:文字列定数とワイド文字列定数の結合
(1999/11/29 [月])
プリプロセッサは、並んだ二つの文字列定数を一つの文字列定数に併合する役割を持っています。例えば、文字列定数 "hoehoe " と文字列定数 "room" が並んでいれば、その二つを結合した文字列 "hoehoe room" に、ワイド文字列定数 L"hoehoe " とワイド文字列定数 L"room" が並んでいれば、結合されたワイド文字列定数 L"hoehoe room" に変換されます。しかし、文字列定数とワイド文字列定数に関する結合に関しては未定義の動作となっていました。
今回の C 言語では、文字列定数とワイド文字列定数は結果として、単一のワイド文字列定数になることになりました。これは、ワイド文字列を使用した関数で、新たに余計なマクロを定義しなくてもすむようにするためです。例えば、inttypes.h で定義されているマクロ PRIxFAST32 などを使うことを考えます。もし今回の決定が無ければ、ワイド版のマクロを別に定義する必要にせまられますが、今回の決定により、wprintf ( L"val=%"PRIxFAST32"\n", intfast32val ) のように何ら不自然ではなく記述することができます。
今回の C 言語では、文字列定数とワイド文字列定数は結果として、単一のワイド文字列定数になることになりました。これは、ワイド文字列を使用した関数で、新たに余計なマクロを定義しなくてもすむようにするためです。例えば、inttypes.h で定義されているマクロ PRIxFAST32 などを使うことを考えます。もし今回の決定が無ければ、ワイド版のマクロを別に定義する必要にせまられますが、今回の決定により、wprintf ( L"val=%"PRIxFAST32"\n", intfast32val ) のように何ら不自然ではなく記述することができます。
by seclan