Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置C++包含通过程序代码行的路径 P>已经有很多选项列出如何向C++编译器添加路径,以便包含命令在这些路径上工作。但是,假设我只有一个文件,而不是整个项目,我只想为这个文件添加一个include路径。我想通过cpp文件中的一行代码来实现这一点,比如说,作为第一行。这怎么可能?为什么?因为我需要包含来自另一个目录的一些头文件,而这些头文件又依赖于同一目录中的其他头文件,并且我收到错误消息,由于未将此路径添加到包含列表中,因此无法找到这些其他文件_C++_Gcc - Fatal编程技术网

设置C++包含通过程序代码行的路径 P>已经有很多选项列出如何向C++编译器添加路径,以便包含命令在这些路径上工作。但是,假设我只有一个文件,而不是整个项目,我只想为这个文件添加一个include路径。我想通过cpp文件中的一行代码来实现这一点,比如说,作为第一行。这怎么可能?为什么?因为我需要包含来自另一个目录的一些头文件,而这些头文件又依赖于同一目录中的其他头文件,并且我收到错误消息,由于未将此路径添加到包含列表中,因此无法找到这些其他文件

设置C++包含通过程序代码行的路径 P>已经有很多选项列出如何向C++编译器添加路径,以便包含命令在这些路径上工作。但是,假设我只有一个文件,而不是整个项目,我只想为这个文件添加一个include路径。我想通过cpp文件中的一行代码来实现这一点,比如说,作为第一行。这怎么可能?为什么?因为我需要包含来自另一个目录的一些头文件,而这些头文件又依赖于同一目录中的其他头文件,并且我收到错误消息,由于未将此路径添加到包含列表中,因此无法找到这些其他文件,c++,gcc,C++,Gcc,例如: 假设我想在目录中包含文件_a.h …/包括/额外 我可以通过 #include <extra/file_a.h> 但是,如果,例如,我没有将额外的目录直接作为include的子目录,或者文件_a希望包含来自其他地方的其他文件,甚至可能是/extra,但它不是include的子目录,例如,那么我会遇到麻烦,因为跟踪目录/依赖项变得很困难 我认为通过编译器更改这些目录是一个坏习惯,所以我认为更好的解决方案是将其集成到程序中,这样无论我使用哪种编译器,它都可以工作,而无需考虑以

例如: 假设我想在目录中包含文件_a.h …/包括/额外

我可以通过

#include <extra/file_a.h> 
但是,如果,例如,我没有将额外的目录直接作为include的子目录,或者文件_a希望包含来自其他地方的其他文件,甚至可能是/extra,但它不是include的子目录,例如,那么我会遇到麻烦,因为跟踪目录/依赖项变得很困难


我认为通过编译器更改这些目录是一个坏习惯,所以我认为更好的解决方案是将其集成到程序中,这样无论我使用哪种编译器,它都可以工作,而无需考虑以后,一旦指定,我必须添加哪些目录

据我所知,您:

#include <absolute/path/to/header/header.h
并使用

gcc ... -I/path/to/headers ...

包含路径告诉编译器它在哪里找到它实际上应该包含到其他文件中的文件。这通常通过编译器选项进行控制,如本答案中所述

C++标准没有提供任何来自C++源文件的工具,我不知道任何厂商的任何编译器扩展都允许这样做,所以坏运气…… 现在,根据您使用的IDE,希望您使用的是一个…,不过,您很可能可以单独为文件添加包含路径。如果IDE不允许…,则会出现一个奇怪的IDE,例如。G使用Eclipse +GCC,右键单击文件,选择“属性-> C/C++ +构建->工具设置-> GCC C++编译器> > < /P>


或者您可以使用make文件,实际上,标准设置中的eclipse会自动为您生成一个文件。。。,这同样允许您为每个文件单独设置编译器选项—可以由您自己直接编写,也可以由其他一些工具生成,如。

当您必须在compile命令中指定一个或多个include路径时,您可以按如下方式执行:

g++ -I/path1/to/headers -I/path2/to/headers YourProgram.cpp

如果您可以更改要包含的文件,那么您可以将它们的include从更改为file.h,因为您可能没有考虑在运行时执行的代码行,那么代码行是什么意思?为什么不在include语句中使用路径?请详细描述您想要实现的目标,否则您将面临收到XY问题意见的危险。请展示代码和标题的示例,并描述所需的效果。简言之,这是一个鸡和蛋的问题-对不起,我的问题太不具体了,我已经修改了我的问题。你在猜OP想要什么。这很勇敢。但是,您似乎还通过cpp文件中的一行代码来反驳OP声明的内容,以及可能认为需要的内容。所以你猜OP想要的不是明确的陈述。我建议你解释一下为什么你反对OP在问题中用粗体字写的东西。但说服OP改变方法更有可能以互动方式取得成功。事实上,这个答案看起来很像不是这个问题的答案。@Yunnosch,嗯,可能是对的。我们拭目以待。如果OP的问题不一样,我猜错了,我会删除我的答案:没问题。@Yinyue我的解决方案编译器是你唯一可以遵循的。否则,您必须将所有标题移动到项目目录中,并修改all include指令以匹配项目树。谢谢,看来这确实是唯一的选项。
#include <header.h>
gcc ... -I/path/to/headers ...
g++ -I/path1/to/headers -I/path2/to/headers YourProgram.cpp