Как проверить, использует ли компилятор C ++ стандарт IEEE 754 с плавающей запятой - PullRequest
27 голосов
/ 25 апреля 2011

Я хотел бы задать вопрос, следующий за этим , на который довольно хорошо отвечает проверка определения, использует ли компилятор стандарт.Однако это работает только для C.Есть ли способ сделать то же самое в C ++?

Я не хочу преобразовывать типы с плавающей запятой в текст или использовать некоторые довольно сложные функции преобразования.Мне просто нужна проверка компилятора.Если вы знаете список таких совместимых компиляторов, пожалуйста, оставьте ссылку.Я не смог найти его.

1 Ответ

29 голосов
/ 25 апреля 2011

На самом деле у вас есть более простой способ добиться этого в C ++. Из стандарта C ++ 18.2.1.1 класс numeric_limits существует в пределах std. Для доступа к указанному статическому члену вы просто делаете это:

std::numeric_limits<double>::is_iec559;

Или:

std::numeric_limits<float>::is_iec559;

Который должен возвращать true, если используется IEEE 754, в противном случае - false.

Как альтернативный метод, вторая часть Ответ Адама должна сделать это также для C ++.

...