Я использую c ++ 11 и использую (или) библиотеку pugixml c ++. Я сам собираю файлы pugi (1 .cpp файл и 2 .hpp файлы).
При использовании gcc в linux (ubuntu) он работает нормально. Когда я строю с другим x-компилятором, я получаю предупреждения (возможно, из-за разной архитектуры / целочисленных размеров) .... пока достаточно справедливо.
Моя проблема в том, что я хочу исправить предупреждения, потому что я использую -Werror
во всем коде / make-файле, и у меня включено много предупреждений.
Конкретная строка кода в библиотеке pugixml выглядит следующим образом (это файл ~ 12k строк):
#elif defined(fpclassify) && defined(FP_NAN)
return fpclassify(value) == FP_NAN
#else
Где значение double
. Я получаю ошибку:
преобразование в 'float' из 'double' может изменить его значение [
-Werror = float-преобразование]
Это, кажется, исправляет это: return fpclassify(static_cast<float>(value)) == FP_NAN
Но то, что я не вижу (кроме того, что компилятор говорит мне), это то, что есть fpclassify()
и FP_NAN
. Я могу видеть некоторую документацию здесь и здесь . Кажется, чтобы показать, что существует версия fpclassify для float
и double
.... поэтому я не понимаю, почему есть предупреждения ...
Используемый мной x-компилятор: arm-poky-linux-gnueabi-gcc
версия 5.2.0. который поддерживает c ++ 11.
Я ищу причину, по которой я получаю это предупреждение. Я не могу сделать минимальный пример, но если есть какая-либо дополнительная информация, которая будет полезна, я могу опубликовать ее ...