4

g++ バージョン 4.2.2 から 4.7.2 に変換しようとしている大量のコードがあります。バージョン 4.2.2 以前では、 とuint定義されていたようunsigned intです。uintこれは標準的な C++ のことではなく、本物の男性が ISO 標準の C++ を書いていることは知っていますが、すべてのソース ファイルを変更せずに g++ を受け入れるようにするフラグまたは何らかの方法があるかどうか疑問に思っていました。CPPFLAGSg++ ランラインにスイッチを変更または追加できますか? 私のグーグルは何も得られませんでした。uint職場の別のグループからのソース ファイルがいくつかあるので、彼らの違反を受け入れたいと思います。

例えば

#include <iostream>
#include <fstream>
#include <assert.h>
using namespace std;
int main(void) {
    uint foo = 0xdeadbeef;
    cout<<hex<<foo<<endl;
}

収量:

/tmp/rbroger1/gcc_update rbroger1 @ plxc25804 
% /usr/intel/pkgs/gcc/4.2.2/bin/g++ ~/tmp.cc && ./a.out
deadbeef
/tmp/rbroger1/gcc_update rbroger1 @ plxc25804
% /usr/intel/pkgs/gcc/4.7.2/bin/g++ ~/tmp.cc && ./a.out
/nfs/pdx/home/rbroger1/tmp.cc: In function 'int main()':
/nfs/pdx/home/rbroger1/tmp.cc:8:5: error: 'uint' was not declared in this scope
/nfs/pdx/home/rbroger1/tmp.cc:8:10: error: expected ';' before 'foo'
/nfs/pdx/home/rbroger1/tmp.cc:9:16: error: 'foo' was not declared in this scope
4

1 に答える 1

9

-include a_file_where_there_is_typedef_to_uint.hg++にフラグを追加できます

説明書より

-include file

#include "file" がプライマリ ソース ファイルの最初の行として表示されているかのようにファイルを処理します。ただし、ファイルを検索する最初のディレクトリは、メイン ソース ファイルを含むディレクトリではなく、プリプロセッサの作業ディレクトリです。そこに見つからない場合は、通常どおり #include "..." 検索チェーンの残りの部分で検索されます。

複数の -include オプションを指定すると、ファイルはコマンド ラインに表示される順序でインクルードされます。

于 2013-02-19T22:45:06.480 に答える