私は、たまたまSIZE_MAX
いくつかの場所で使用されている既存の C++ コードベースに取り組んでいます。いくつかのリファクタリングを行いSIZE_MAX
ましたが、モジュールの 1 つで定義されていません。この問題は、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
cstdint
、stdint.h
、limits.h
、inttypes.h
、stdio.h
、stdlib.h
およびおそらく他のいくつかを含めようとしましたが、 に必要な特定のヘッダー ファイルがわかりませんSIZE_MAX
。
私が取り組んでいるプログラムは、SIZE_MAX
いくつかの変更を加える前に、さまざまな場所で使用され、正常にコンパイルされたことに注意することが重要です。私が行った変更により、それが使用された1 つの ソース ファイルで未定義になりました.cpp
(他のファイルは引き続き問題ありません)。したがって、私のシステムには、正しく定義されているヘッダー ファイルがいくつか存在します。