如何强制printf在Windows上输出[ - ] inf或[ - ] infinity?

时间:2015-02-08 14:44:50

标签: windows gcc printf mingw c99

C99标准说:

  

表示无穷大的双参数在其中一个中转换   styles [ - ] inf或[ - ] infinity - 实现的样式是   实现定义。 (p.278第7.19.6.1节)

不幸的是在Windows上:

printf("%f\n", 1.0f/0.0f)

产生:1。#INF00

这是一个问题,因为有些应用程序期望符合C标准的字符串作为输入(C#的Double.Parse也适用于“Infinity”但不适用于“1.#INF00”,奇怪的是“无限”至少在我不行时尝试使用Mono)。

我的问题是如何在Windows下强制printf输出“inf”或“infinity”而不是1.#INF00?

(我正在使用MinGW gcc 4.8.2进行编译)

1 个答案:

答案 0 :(得分:1)

您可以在printf-functions的MSVC(默认)和mingw版本之间进行选择。 只需像这样定义__USE_MINGW_ANSI_STDIO,输出应该符合C99:

#define __USE_MINGW_ANSI_STDIO 1

部分文档herehere