Re: typedefについて確認させてくださ い
いいじまです。
> でも、#if じゃなくて、if で書けば良いと思いますけど。
> なんか問題あるんですか?
あ、普通はそっか。きちんと最適化オプションつければ if(0) はコンパイラが
丸ごと削除してくれますものね。
ただ今回の場合、自作のヘッダファイルで
#if WCHAR_MAX==0x7FFFUL || WCHAR_MAX==0xFFFFUL
#define UCS2 wchar_t;
typedef uint_least32_t UCS4;
//後略
と書いて、たとえば
UCS2 *foo(UCS2[]);
と関数を宣言して、Win32 環境ではこの foo() の引数に wchar_t の配
列を渡す、ということをしたいんですよ。OS の MultiByteToWideChar
は wchar_t の配列にデータを返すので。
で、wchar_t が UCS-2 の処理系では foo() に wchar_t の配列を渡して
も文句を言われず、かつ、wchar_t が UCS-4 の処理系、具体的に言うと
glibc とかでは foo() に wchar_t の配列を渡そうとするとエラーない
し警告になる、という仕様にしたいんです。
とすると、識別子 UCS2 は typedef ではなく #define で定義する必要
がある、というわけです。
…汚い方法です、はい。
========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delmonta@ht.sakura.ne.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735