Я работаю над существующей кодовой базой С++, которая используется в SIZE_MAX
в нескольких местах. Я сделал несколько рефакторингов, и теперь SIZE_MAX
не определен в одном из модулей. Эта проблема возникла, когда Travis-CI попытался построить проект в Linux. Он работал отлично, прежде чем я реорганизовал материал, но трассировка, в которую были включены точные файлы заголовков, сложна.
В попытке реплицировать проблему локально я установил виртуальную машину Ubuntu с gcc по умолчанию и смог воспроизвести ее. Вот соответствующий источник:
#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
, используемой в разных местах, прежде чем внести некоторые изменения. Изменения, которые я сделал, заставили его стать undefined в одном исходном файле .cpp
, где он был использован (остальные продолжают быть прекрасными). Таким образом, в моей системе есть некоторый заголовочный файл, где он правильно определен.