При переносе проекта с 64-битного на 32-битный: float, измененный на long double, выдает ошибку для% f - PullRequest
0 голосов
/ 30 марта 2012

Как при переносе 64-битного проекта в 32-битный проект для обеспечения совместимости диапазона изменено:

typedef float float_t;

на

typedef long double float_t;

Все идет отлично, но ошибка появляется во всех спецификаторах printf для% F.Я не хочу менять на% Le во всем коде.

Пожалуйста, предложите любое общее решение, чтобы оно подходило как для 32-битной, так и для 64-битной системы на языке c.

Ответы [ 2 ]

3 голосов
/ 30 марта 2012

Вы должны будете использовать #define для строки формата для float / long double или использовать специальную функцию форматирования

0 голосов
/ 30 марта 2012

Вы не указали, какой язык вы используете.В C ++ std::cout предпочтительнее, чем printf, и это даст вам правильное форматирование.

Если вы используете C, вы можете определить макрос на основе платформы для обоих типов с плавающей запятойпеременные и строка форматирования для printf

...