4

我有大量代码正在尝试从 g++ 版本 4.2.2 转换为 4.7.2。在 4.2.2 及之前的版本中,它似乎uint被定义为unsigned int. 我知道这不是标准的 c++ 东西,真正的男人编写 ISO 标准 C++,但我想知道是否有一个标志或某种方式让 g++uint在不修改所有源文件的情况下接受。我可以更改CPPFLAGS或添加开关到 g++ 运行线吗?我的谷歌一无所获。我有一些来自不同工作组的源文件,我想接​​受他们的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.h标志添加到 g++

从手册

-include file

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

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

于 2013-02-19T22:45:06.480 回答