gcc-4.9不能编译“包含”;“用户定义文件”; 我尝试用GCC-4.9. < /P>编译以下简单C++文件(A.CPP) #include <iostream> #include <foo> using namespace std; int main() { int x = 3; cout << f(x) << endl; return 0; }
我无法使用gcc-4.9编译.cpp,因为编译器会说:gcc-4.9不能编译“包含”;“用户定义文件”; 我尝试用GCC-4.9. < /P>编译以下简单C++文件(A.CPP) #include <iostream> #include <foo> using namespace std; int main() { int x = 3; cout << f(x) << endl; return 0; },c++,gcc,C++,Gcc,我无法使用gcc-4.9编译.cpp,因为编译器会说: a.cpp:2:15: fatal error: foo: No such file or directory 我认为导致编译错误的原因是,用户定义的文件作为标准头文件(在“”)包含在内 以前,我看到过相同的错误,并且知道解决这些编译错误的两种方法 第一个是将编译器gcc-4.9更改为gcc-5.0 第二个是替换 #include <foo> 虽然我不知道为什么这些方法可以解决编译错误,但我现在就开始这样做了 但现在,我看
a.cpp:2:15: fatal error: foo: No such file or directory
我认为导致编译错误的原因是,用户定义的文件作为标准头文件(在“”)包含在内
以前,我看到过相同的错误,并且知道解决这些编译错误的两种方法
第一个是将编译器gcc-4.9更改为gcc-5.0
第二个是替换
#include <foo>
虽然我不知道为什么这些方法可以解决编译错误,但我现在就开始这样做了
但现在,我看到了一个无法用第二种方法解决的代码。
它包括许多用户定义的文件,作为许多头文件中的标准文件。因此,通过第二种方法,我们必须编辑许多头文件
它也是通过第一种方法解决的,但我现在想用gcc-4.9进行编译。
我认为如果有一种方法可以不用编辑就用gcc-4.9编译“a.cpp”,那么代码也可以用同样的方法编译
如何不用编辑就通过gcc-4.9编译“a.cpp”。为什么我可以用gcc-5.0编译“a.cpp”?#include“file”
将在包含它的文件所在的目录中查找文件#include
完全依赖于include路径,因此编译命令行上需要-I.
(或任何路径)。#include
和#include“foo”
不是一回事
首先只在标准位置查找foo
文件,而后者首先在当前目录中查找,然后在标准位置查找。这就是为什么您应该对本地包含文件使用#include“foo”
,而从不使用#include
但是标准位置列表可以通过-I
选项进行配置:gcc-I/path/to/include/dir-other_options source.c-o executable
。如果要了解更多详细信息,请使用mangcc或info gcc
即使-I.
选项允许您始终使用#include
请不要这样做,如果您希望您的代码被其他人阅读。include文件在哪里找不到?
我猜是一个子目录
在这种情况下,答案是要么将子目录添加到搜索路径,要么将include更改为
#include "subdirectory/name_of_file"
最好将系统文件和本地文件分开-建议“foo”首先只在标准位置查找foo文件,而后者首先在当前目录中查找,然后在标准位置查找。你倒过来了。
#include "foo"
#include "subdirectory/name_of_file"