Могу ли я получить поведение -Wfloat-equal для всех сравнений, кроме буквального нуля?

я хотел бы включить -Wfloat-equal в моих параметрах сборки (это флаг GCC, который выдает предупреждение, когда два числа с плавающим указателем сравниваются с помощью == или! = операторы). Однако в нескольких заголовочных файлах библиотек, которые я использую, и в значительной части моего собственного кода я часто хочу выполнить переход для ненулевых значений типа float или double, используя if (x) или ] if (x! = 0) или варианты этого.

Поскольку в этих случаях я абсолютно уверен, что значение точно равно нулю - проверенные значения являются результатом явной инициализации нуля, calloc и т. Д. - Я не вижу недостатка в использовании этого сравнения, а не в значительно более дорогом и менее читаемом вызове моей функции near (x, 0) .

Есть ли какой-нибудь способ чтобы получить эффект -Wfloat-equal для всех других видов сравнений равенства с плавающей запятой, но разрешить им пройти без отметок? Их достаточно в файлах заголовков библиотеки, поэтому они могут значительно испортить мои предупреждения.

5
задан Puppy 7 April 2012 в 10:35
поделиться