Как я могу обнаружить недопустимое число с плавающей запятой перед выполнением каких-либо операций с ним

У меня есть приложение, которое загружает двоичный файл float значения из файла. Я обнаружил, что «производитель» этого файла иногда помещает в него значения, которые не являются допустимыми битовыми шаблонами с плавающей запятой, особенно 0x80426c51 (могут быть и другие). Когда я делаю fread() из этого этого значения в адрес с плавающей запятой (который был приведен к void *) успешно завершается. Но если я попытаюсь получить доступ к float чтобы сделать что-нибудь, исключение происходит. Я даже не могу разыграть float к double так как это недействительно float, Я думаю, что мне нужно что-то вроде fpclassify() который может занять float, Но я не знаю, существует ли такая функция / макрос. Моя целевая операционная система <math.h> даже не имеет fpclassify(), Я использую gcc версии 4.8.1.9 в «не основной» операционной системе (не Windows / Mac / Linux) с набором инструкций core-i7. Хотя я использую C ++, я не использую ни стандартные библиотеки шаблонов, ни RTTI, потому что это встроенная система.

Примечание: в краткосрочной перспективе я изменил программу-генератор, но мне не нравится это как долгосрочное решение, так как я не могу иметь никакого контроля над конечной программой-генератором.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]