Cygwin の mingw でシステム インクルードの順序を変更するにはどうすればよいでしょうか?

Cygwin の mingw でシステム インクルードの順序を変更するにはどうすればよいでしょうか?

cygwin32でmingw32を使用してクロスコンパイルしようとしています。しかし、float.hに関連するエラーが発生します。

In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/winnt.h:16:0,
                 from /usr/i686-w64-mingw32/sys-root/mingw/include/minwindef.h:146,
                 from /usr/i686-w64-mingw32/sys-root/mingw/include/windef.h:8,
                 from /usr/i686-w64-mingw32/sys-root/mingw/include/windows.h:69,
                 from globals.h:17,
                 from globals.c:10:
/usr/i686-w64-mingw32/sys-root/mingw/include/float.h:278:57: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
 _CRTIMP double __cdecl __MINGW_NOTHROW _chgsign (double _X);

ここで同様の問題を扱った記事を見つけました:

https://www.cygwin.com/ml/cygwin/2003-07/msg00525.html

そして、mingw float.h が gcc float.h の前に見つかるように、インクルードの順序を変更することを提案しました。

ただし、次のように手動でヘッダーを含めようとすると、

i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I /cygdrive/d/Cygwin32/usr/i686-w64-mingw32/sys-root/mingw/include

詳細オプションを使用すると、「システム ディレクトリを複製する非システム ディレクトリです」という理由でインクルードが無視されたというメッセージが表示されます。

私の推測では、mingw ライブラリと cygwin のソースがインストールされている場合 (実際にインストールしました)、i686-w64-mingw32-gcc を呼び出すと、そのディレクトリが自動的に含まれると思います。

コンパイラの詳細出力では、インクルードの順序に問題があることが明確にわかります。

/usr/lib/gcc/i686-w64-mingw32/4.8.3/include
 /usr/lib/gcc/i686-w64-mingw32/4.8.3/include-fixed
 /usr/i686-w64-mingw32/sys-root/mingw/include

しかし、mingw include を gcc include の前に移動するにはどうすればよいですか?

答え1

gcc フラグ -nostdinc を使用して、インクルード順序を再定義できることがわかりました。

以前の Google 検索でなぜ見つからなかったのかはわかりません。

関連情報