Неоднозначное определение байтов в rpcndr и cstddef - PullRequest
0 голосов
/ 23 сентября 2019

Мы недавно перешли в Visual Studio 2019, я хотел воспользоваться std :: filesystem :: create_directory , который доступен в c ++ 17.Я изменил свойства проекта, чтобы включить c ++ 17

Properties
    C/C++
        Language
            C++ Language Standard: ISO C++17 Standard (/std:c++17)

Теперь начинается кошмар ошибки, по-видимому, байт теперь имеет два определения

1) rpcndr.h

typedef unsigned char byte;

2) cstddef

enum class byte : unsigned char {};

Я изменил все варианты использования byte на unsigned char, наш код «свободен от байтов».Тем не менее, я все еще получаю ошибки, так как он используется другими заголовками Windows.

Как это исправить, не изменяя Windows SDK, как предложено в отчете об ошибке ?

1 Ответ

1 голос
/ 23 сентября 2019

Из комментарий :

std::byte вызвал немало хаоса, довольно сильно противоречит чувствам RPC 1980-х годов.Добавьте _HAS_STD_BYTE=0 к определениям препроцессора.Или просто поместите код в свой собственный файл .cpp, чтобы вам не приходилось #include заголовки Windows.

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