我正在处理一个现有的C++代码库,它在几个地方使用了SIZE_MAX
。我进行了一些重构,现在其中一个模块中未定义SIZE_MAX
。当Travis-CI尝试在Linux上构建项目时出现了问题。在我重构之前,它正常工作,但是跟踪包含哪些确切头文件很困难。
为了在本地复制该问题,我安装了一个带有默认gcc的Ubuntu虚拟机,并成功复制了该问题。以下是相关源代码:
#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
我尝试了包括 cstdint
、stdint.h
、limits.h
、inttypes.h
、stdio.h
、stdlib.h
,以及可能还有其他的头文件,但我无法找出我需要哪个特定的头文件来获取 SIZE_MAX
。
需要注意的是,在我做一些更改之前,我正在处理的程序编译得很好,并在各个地方使用了 SIZE_MAX
。我所做的更改导致它在一个被使用的 .cpp
源文件中变成了未定义的(其他源文件仍然正常)。因此,在我的系统上存在某些正确定义它的头文件。
cstdint
吗?在 [cstdint.syn] 部分中说它应该在那里,但它也应该在stdint.h
中。 - Shafik YaghmourSIZE_MAX
的含义,而我的问题是关于我需要包含哪个头文件才能获得它。 - Greg Hewgill