Ошибки компиляции в WINNT.H после ретаргетинга решения до последнего SDK (10.0.18362) - PullRequest
1 голос
/ 07 ноября 2019

После переназначения моего решения на SDK версии 10.0 (последняя установленная версия) (10.0.18362) и обновления моих проектов до набора инструментов платформы v142 я получаю ошибки времени компиляции в winnt.h следующим образом:

...\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18611,19): error C2143: syntax error: missing ':' before 'constant'
...\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18611,22): error C2143: syntax error: missing ';' before ':'
...\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18611,22): error C2059: syntax error: ':'
...\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18612,29): error C2143: syntax error: missing '{' before ':'
...\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18612,29): error C2059: syntax error: ':'
...\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18613,9): error C2059: syntax error: '}'
...\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18614,5): error C2059: syntax error: '}'
...\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18615,1): error C2059: syntax error: '}'

Это происходит исключительно в результате обновления. Что я мог сделать не так?

1 Ответ

1 голос
/ 07 ноября 2019

Оказывается, я определил макрос CR в своем коде следующим образом:

#define CR "\r"

Он перезаписывал имя члена структуры данных в заголовке Windows SDK.

typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY {
    DWORD BeginAddress;
    union {
        DWORD UnwindData;
        struct {
            DWORD Flag : 2;
            DWORD FunctionLength : 11;
            DWORD RegF : 3;
            DWORD RegI : 4;
            DWORD H : 1;
            DWORD CR : 2;           // <-- conflicting member
            DWORD FrameSize : 9;
        } DUMMYSTRUCTNAME;
    } DUMMYUNIONNAME;
} IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY, * PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY;

То же самое произошло с этим парнем, который просит помощи на платах разработчиков MSFT .

Вам придется переименовать ваш #define или избегать обновления SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...