【发布时间】:2014-09-05 10:41:59
【问题描述】:
我通过 Mingw 在 Windows 上编译了一个 linux 程序。然而,转换并不完美。 例如,在 Windows 上,输出是这样的(我得到的是 'zu' 而不是实数):
Approximated minimal memory consumption:
Sequence : zuM
Buffer : 1 X zuM = zuM
Table : 1 X zuM = zuM
Miscellaneous : zuM
Total : zuM
事实证明,Mingw 不支持 %zu,但它提供了一种解决方法。他们在web site 上说:
由于您使用的是 Microsoft 的实现,因此这永远不会起作用。 直接使用mingw_printf或者之前定义USE_MINGW_ANSI_STDIO为1 包括 stdio.h。
所以,我在我的程序中进行了搜索,发现 cdhit-common.h 是唯一具有 #include 行的文件。所以,我在该行上方定义了 USE_MINGW_ANSI_STDIO 并编译:
#include<iostream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#define USE_MINGW_ANSI_STDIO 1
#include<stdio.h>
...
它编译但程序仍然输出'zu'而不是数字。我所做的一切好吗?为什么没用?
注意:使用 USE_MINGW_ANSI_STDIO 的解决方案适用于 mingw64,而我使用的是 mingw。我希望这两个平台都适用。
【问题讨论】:
-
我猜
<iostream>包括<stdio.h>在你做之前,移动#define USE_MINGW_ANSI_STDIO 1之前<iostream>