VC++ позволяет /##/ в качестве значения макроса - как с этим быть в eclipse/mingw-gcc?

Я пытаюсь скомпилировать настоящее win32 приложение в eclipse/mingw-gcc, довольно безуспешно до сих пор (см. https://stackoverflow.com/questions/9162976/how-to-compile-a-win32-application-in-eclipse-using-the-mingw-gcc-toolchain)

В любом случае, при устранении очередной ошибки, следующая строка в файле c:\Program Files (x86)\Microsoft SDKs\Windows\v7. 0A\Include\WTypes.h привлекла мое любопытство:

#define _VARIANT_BOOL    /##/

Она используется в struct tagVARIANT из C:\Program Files (x86)\Microsoft SDKs\Windows\v7. 0A\Include\OAIdl.h:

VARIANT_BOOL boolVal;
_VARIANT_BOOL bool;
SCODE scode;

который расширяется до:

VARIANT_BOOL boolVal;

SCODE scode;

Потому что /##/ расширяется до //, который начинает комментарий! Я не верю, что это соответствует стандарту, и действительно, попытка компиляции в mingw-gcc приводит к неудаче:

pasting "/" and "/" does not give a valid preprocessing token   ComHelpers      line 445, external location: o:\C\wsdk\Include\oaidl.h  C/C++ Problem

Поэтому я ищу совета, как решить эту проблему.

6
задан Community 23 May 2017 в 12:00
поделиться