如何在C++中定义常量

How to define a constant in C++?

本文关键字:定义 常量 C++      更新时间:2023-10-16

我通过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,但它提供了一个变通方法。在他们的网站上,他们说:

这将永远不会起作用,因为您正在使用Microsoft的实现。直接使用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>
...

它进行编译,但程序仍然输出"zu"而不是数字。我所做的可以吗?为什么不起作用?

注意:USE_MINGW_ANSI_STDIO的解决方案适用于mingw64,而我使用的是MINGW。我希望是针对这两个平台。

我现在设法在谷歌上搜索的宏是:__USE_MINGW_ANSI_STDIO。试试看。

您正在设置一个预处理器标志。这意味着当编译器读取<stdio.h>时,它将把USE_MINGW_ANSI_STDIO设置为1。这可能在编译器指令#if#ifdef中使用。

通常最好将这些标志放入编译标志中,例如

CCD_ 6而不是代码。

(注意:可能是-D__USE_MINGW_ANSI_STDIO=1

如果你真的把它放进代码中,那么要么

  • 在总是包含在任何其他内容之前的标题中,例如一些"与平台相关"的标题
  • 在文件中包含任何其他内容之前

其中一个C++流标头可能使用<stdio.h> 实现