我有大量的代码,我试图从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
答案 0 :(得分:9)
您可以向g ++添加-include a_file_where_there_is_typedef_to_uint.h
标志
-include file
处理文件,好像#include“file”出现在主要源文件的第一行。但是,搜索文件的第一个目录是预处理器的工作目录,而不是包含主源文件的目录。如果在那里找不到,则在#include“...”搜索链的其余部分中搜索正常。
如果给出了多个-include选项,则文件将按照它们在命令行中出现的顺序包含在内。