как изменить порядок включения системных файлов в mingw под cygwin?

как изменить порядок включения системных файлов в mingw под cygwin?

Я пытаюсь использовать mingw32 под cygwin32 для кросс-компиляции. Однако я получаю ошибку, связанную с 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

при использовании опции verbose я получаю сообщение о том, что мое включение было проигнорировано, поскольку «это несистемный каталог, который дублирует системный каталог».

Я предполагаю, что вызов i686-w64-mingw32-gcc автоматически включает этот каталог, если у меня установлены библиотеки mingw и исходный код для cygwin, что я и сделал.

В подробном выводе компилятора я ясно вижу проблему в порядке включений.

/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 перед включениями gcc?

решение1

Разобрался, можно использовать флаг gcc -nostdinc, а затем просто переопределить порядок включения.

Не знаю, почему мои предыдущие поиски в Google не дали результатов.

Связанный контент