如何在C++中定义常量?

WeG*_*ars 3 c++ linux gcc mingw

我通过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
Run Code Online (Sandbox Code Playgroud)

事实证明,Mingw不支持%zu,但它提供了一种解决方法.在他们的网站上,他们说:

由于您使用的是Microsoft的实现,因此无法使用.在包含stdio.h之前,直接使用mingw_printf或将USE_MINGW_ANSI_STDIO定义为1.

所以,我在我的程序中进行了搜索,我发现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>
...
Run Code Online (Sandbox Code Playgroud)

它编译但程序仍然输出'zu'而不是数字.我做的不错吗?为什么没用?

注意:使用mingw时,使用USE_MINGW_ANSI_STDIO的解决方案适用于mingw64.我希望是适用于这两个平台.

Hig*_*tor 5

我现在设法谷歌的宏是: __USE_MINGW_ANSI_STDIO.试试吧.

  • 是的,查看HTML源代码显示链接到OP的SourceForge错误页面应该直接使用_"使用`__mingw_printf`或在包含stdio.h之前将`__USE_MINGW_ANSI_STDIO`定义为1."_但是`__`字符会被转换到`<strong>`标记并且不可见 (3认同)