[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:7289] w32api 3.7 でビルドエラー



>>>>> [meadow-develop : No.7289] にて
>>>>> 藤井さんは書きました:
> とりあえず、末尾に貼り付けたパッチを適用すればコンパイルが通るようになり
> ます。

> VC でビルドの問題がないかどうかを確認してください。問題がなければコミッ
> トします。

VC6ではOKです。コミットをお願いします。

;; この程度の変更あれば、確認無しでコミットして構わないと思います。
;; 心配であれば、コミット後に確認を求めれば十分です。


> - インクルードガードに用いるマクロを条件判定に使わない。

>   RECONVERTSTRING 構造体の定義判定に用いているマクロ _IMM_ は imm.h が
>   インクルード済みかどうかを判定するマクロですが、Cygwin に含まれる
>   imm.h では _IMM_H が定義されており、互換性がありません。

これはそうですね。使うべきではないですね。


> - WINVER を条件判定に使わない。

>   Cygwin では WINVER は定義されていません。

windef.h で定義されているのでは?


>   WINVER は最新ではない OS でもビルドできるバイナリを作成するために、新
>   しい定数定義や関数宣言などを抑制するためのマクロであって、SDK で目的
>   の定数や関数が定義されているかどうかを判定するために使うべきではない
>   と思います。

“WINVER を使うべきでない”が真であるとして、良い代案はあるでしょ
うか?

本来であれば、configure で、構造体や関数の有無をチェックすべきな
んでしょうけど、ちょっと面倒ですよね。


> Index: src/mw32term.h
> ===================================================================
> --- src/mw32term.h	(revision 4060)
> +++ src/mw32term.h	(working copy)
> @@ -847,6 +847,19 @@
>  #define IR_CLOSECONVERT   0x122
 
>  #ifdef IME_RECONVERSION
> +#if (!defined (_IMM_) || (WINVER < 0x040A)) && !defined(IMR_RECONVERTSTRING)

IMR_RECONVERTSTRING が未定義の場合は、必ず RECONVERTSTRING も未定
義であることが成り立ちますかね?

そうであれば、これは
#indef IMR_RECONVERTSTRING
で十分なのですけどね。

--
三好 雅則 http://miyoshi.meadowy.org/