gpt4 book ai didi

c++ - 哪个 C++ 标准头文件定义了 SIZE_MAX?

转载 作者:IT老高 更新时间:2023-10-28 22:18:57 37 4
gpt4 key购买 nike

我正在开发一个恰好在几个地方使用 SIZE_MAX 的现有 C++ 代码库。我做了一些重构,现在 SIZE_MAX 没有在其中一个模块中定义。这个问题出现在Travis-CI试图在 Linux 上构建项目。在我重构之前它工作得很好,但是很难跟踪包含了哪些确切的头文件。

为了在本地复制问题,我安装了一个带有默认 gcc 的 Ubuntu VM,并且能够重现它。以下是相关来源:

#include <stddef.h>

int main()
{
size_t a = SIZE_MAX;
}

命令行很简单:

g++ a.cpp

错误是:

a.cpp: In function ‘int main()’:
a.cpp:5:16: error: ‘SIZE_MAX’ was not declared in this scope

系统信息:

$ uname -a
Linux quartz 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

我试过包括 cstdintstdint.hlimits.hinttypes.hstdio.hstdlib.h,可能还有其他一些,我不知道 SIZE_MAX 需要哪个特定的头文件。

重要的是要注意,在我进行一些更改之前,我正在编写的程序编译良好,在各个地方都使用了 SIZE_MAX。我所做的更改导致它在使用它的 one .cpp 源文件中变得未定义(其他的仍然很好)。所以在我的系统上存在正确定义的 some 头文件。

最佳答案

可能在包含 stdint.h 之前,某些 header 定义了 __STDC_LIMIT_MACROS__STDC_CONSTANT_MACROS

在 Linux 上使用 g++ -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS a.cpp 编译应该可以解决旧编译器上的这个问题。

If you'd like to learn more about these macros...

关于c++ - 哪个 C++ 标准头文件定义了 SIZE_MAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30472731/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com