Кланг не знает PTRDIFF_MAX?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Кланг не знает PTRDIFF_MAX?

Сообщение Anonymous »

Я обновляю нашу машину сборки (с Windows Server 2008 до Windows 10), и у меня есть сборка, которая нормально работала на старой машине (с использованием Visual Studio). У меня возникли проблемы с запуском его с помощью VS Build Tools (я пытаюсь избежать необходимости в лицензии VS) на новом компьютере, поэтому я портирую его для использования Clang.
В сборке используются Flatbuffers, которые я обновил с 1.4.0 до 1.12.0. Во время сборки я получаю следующую ошибку:

Код: Выделить всё

[2/70] Building CXX object CMakeFiles\polyphemus.dir\hardwareconfig.cpp.obj

FAILED: CMakeFiles/polyphemus.dir/hardwareconfig.cpp.obj

C:\PROGRA~2\MICROS~1\2019\BUILDT~1\VC\Tools\Llvm\x64\bin\clang-cl.exe  /nologo -TP  -I"C:\Program Files (x86)\nanomsg\include\nanomsg" -I. -I"C:\Program Files (x86)\FlatBuffers\include" -IE:\JenkinsMIDEBLD\workspace\btaylor-new_build_node_CYC-268_2\polyphemus\include /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -MDd /showIncludes /FoCMakeFiles\polyphemus.dir\hardwareconfig.cpp.obj /FdCMakeFiles\polyphemus.dir\polyphemus.pdb -c E:\JenkinsMIDEBLD\workspace\btaylor-new_build_node_CYC-268_2\polyphemus\hardwareconfig.cpp

In file included from E:\JenkinsMIDEBLD\workspace\btaylor-new_build_node_CYC-268_2\polyphemus\hardwareconfig.cpp:3:
In file included from .\hardwareconfig_generated.h:7:
In file included from C:\Program Files (x86)\FlatBuffers\include\flatbuffers/flatbuffers.h:20:
In file included from C:\Program Files (x86)\FlatBuffers\include\flatbuffers/base.h:45:
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\algorithm(37,63): error: use of undeclared identifier 'PTRDIFF_MAX'
return static_cast
(_Min_value(static_cast(PTRDIFF_MAX), static_cast(_Value)));
Отсутствие определения PTRDIFF_MAX на самом деле довольно странно и предполагает, что Flatbuffers должен был использовать #include в своих файлах, но этого не сделал. Похоже, это может привести к сбою тестов, поэтому я не могу поверить, что это недиагностированная ошибка. Разумеется, если я добавлю #include в свои файлы, они начнут сборку. Однако на самом деле это не похоже на правильное решение - я не могу поверить, что у Flatbuffers есть недокументированная зависимость, согласно которой вам придется выполнять этот импорт самостоятельно, а это говорит о том, что я делаю что-то неправильно. Кто-нибудь знает, пожалуйста?
РЕДАКТИРОВАТЬ: Явное включение C++17 в cmake (а оттуда в clang) приводит к той же ошибке в другом месте, где не используются плоские буферы:

Код: Выделить всё

In file included from E:\JenkinsMIDEBLD\workspace\btaylor-new_build_node_CYC-268_2\polyphemus\complexseries.cpp:2:
In file included from E:\JenkinsMIDEBLD\workspace\btaylor-new_build_node_CYC-268_2\polyphemus\include\polyphemus/complexseries.h:4:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\complex:12:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\sstream:11:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\istream:11:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\ostream:11:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\ios:11:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\xlocnum:16:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\streambuf:11:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\xiosbase:12:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\system_error:14:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\stdexcept:12:
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\xstring(1258,47): error: use of undeclared identifier 'PTRDIFF_MAX'
return _Min_value(static_cast(PTRDIFF_MAX), static_cast(-1) / sizeof(_Elem));
Это в файле, где я сделал свой собственный #include of , так что я думаю, это отвлекающий маневр (а не исправление :-/ ).

Подробнее здесь: https://stackoverflow.com/questions/628 ... trdiff-max
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»