【发布时间】:2015-07-27 05:58:57
【问题描述】:
我尝试使用 gcc-4.9 编译以下简单的 c++ 文件(a.cpp)。
#include <iostream>
#include <foo>
using namespace std;
int main()
{
int x = 3;
cout << f(x) << endl;
return 0;
}
“foo”也是下面这个简单的c++文件(去掉include保护让代码更简单)。
int f(int ret){
return ret + 1;
}
我无法用 gcc-4.9 编译 a.cpp,因为编译器说:
a.cpp:2:15: fatal error: foo: No such file or directory
我认为编译错误是因为用户定义的文件被包含为标准头文件(放括号,“”)。
之前,我看到同样的错误并且知道解决这些编译错误的两种方法。
第一个是将编译器 gcc-4.9 更改为 gcc-5.0。
第二个是替换
#include <foo>
与
#include "foo"
.
虽然我不知道为什么编译错误是通过这些方法解决的,但我现在就这样做了。
但是现在,我看到了无法通过第二种方法解决的代码。 它在许多头文件中包含许多用户定义文件作为标准文件。所以,通过第二种方法,我们必须编辑许多头文件。
也可以通过第一种方法解决,但我现在想用 gcc-4.9 编译。 我认为如果有一种方法可以通过gcc-4.9编译“a.cpp”而无需编辑,代码可以通过相同的方法编译。
如何在不编辑的情况下通过 gcc-4.9 编译“a.cpp”。为什么我可以通过 gcc-5.0 编译“a.cpp”?
【问题讨论】: