x64_86GNUlinuxアーキテクチャでg++バージョン4.1.2を使用しています。コードベースは非常に巨大で、プロジェクトで使用されるmakefileについて十分に理解していません。コードはそのままで正常にコンパイルされます。
デバッグの目的で、いくつg++ -E
かのソースファイルを個別に前処理()してから再コンパイルする必要があります。を使用して、必要なインクルードパスを指定して-I
います。理想的には、コンパイルはうまくいくはずです。
しかし、次のような標準ヘッダーでいくつかの不一致が発生しています。
typedef unsigned long size_t;
コンパイラによって生成された宣言でエラーがoperator new()
発生します(手動に変更するとunsigned int
、このエラーは消えます)- のようなライブラリ関数では
unsigned long numeric_limits<>::max()
、コンパイラは922...807L
;のような大きな数に対して文句を言います。コンパイラエラーを次のように生成しますinteger constant is too large for long type
- の不一致宣言
__errorno_location()
はコンパイラエラーを与えます
何が悪いのかを見つけるのに苦労しています。変更されていないファイルを作成するときにコンパイルがうまくいくのはなぜですか?またg++ -I <> -E
、個々のファイルにオプションを指定すると、標準ヘッダーが壊れ始めるのはなぜですか?
(私たちが書いたコードには問題がないことに注意してください。これは標準ライブラリ側からのものです。typedefとしてstddef.h
持っているものを見つけてみましたが、それで最初の問題が修正されました。)unsigned int
このエラーを修正するためのアイデアをいただければ幸いです。