可以在g ++ 4.7+中重新启用`uint`类型吗?

时间:2013-02-19 22:42:27

标签: c++ gcc

我有大量的代码,我试图从g ++版本4.2.2转换为4.7.2。在4.2.2及更早版本中,似乎uint被定义为unsigned int。我知道这不是一个标准的c ++事情,真正的男人会写ISO标准C ++,但我想知道是否有一个标志或某种方式让g ++接受uint而不修改所有的源文件。我可以更改CPPFLAGS或添加到g ++运行线的开关吗?我的谷歌一无所获。我有一些源文件来自不同的工作组,我想接受他们的uint违规行为。

e.g。

#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

1 个答案:

答案 0 :(得分:9)

您可以向g ++添加-include a_file_where_there_is_typedef_to_uint.h标志

From the manual

  

-include file

     

处理文件,好像#include“file”出现在主要源文件的第一行。但是,搜索文件的第一个目录是预处理器的工作目录,而不是包含主源文件的目录。如果在那里找不到,则在#include“...”搜索链的其余部分中搜索正常。

     

如果给出了多个-include选项,则文件将按照它们在命令行中出现的顺序包含在内。