将项目从64位移植到32位时:float更改为long double会给%f带来错误

时间:2012-03-30 12:20:14

标签: c printf 32bit-64bit porting

正在将64位项目移植到32位项目以使范围兼容更改:

typedef float float_t;

typedef long double float_t;

一切都很完美,但%f的所有printf说明符都出现错误。我不想在整个代码中更改为%Le。

请建议任何通用解决方案,以便它可以使用c语言的32位和64位系统。

2 个答案:

答案 0 :(得分:3)

您将不得不使用#define作为float / long double的格式字符串,或者使用特殊的格式化函数

答案 1 :(得分:0)

您没有分析您正在使用的语言。在C ++中std::cout优先于printf,它会为您提供类型正确的格式。

如果您使用的是C,则可以根据平台为浮点变量的类型和printf的格式字符串定义宏