当我说#include<;xyz.h>;

当我说#include<;xyz.h>;,c,include,visual-studio-2005,c-preprocessor,C,Include,Visual Studio 2005,C Preprocessor,我有大约120个头文件(.h文件),在所有这些头文件中,每个头文件都包含许多使用#include的其他头文件,但由于我将.h文件保存在特定文件夹中,预处理器正在生成filenotfound错误 我将所有的.h文件移动到调用第一个headerfile的单个.C文件中 一种方法是将#include设置为#include“abcd/xyz”,但我需要在所有头文件中执行此操作,只要有include语句,就有数百个头文件 我不能在Visualstudio的HeaderFile部分中包含其中的许多文件,因为

我有大约120个头文件(.h文件),在所有这些头文件中,每个头文件都包含许多使用
#include
的其他头文件,但由于我将.h文件保存在特定文件夹中,预处理器正在生成filenotfound错误

我将所有的.h文件移动到调用第一个headerfile的单个.C文件中

一种方法是将
#include
设置为
#include“abcd/xyz”
,但我需要在所有头文件中执行此操作,只要有include语句,就有数百个头文件

我不能在Visualstudio的HeaderFile部分中包含其中的许多文件,因为有些HeaderFile具有相同的名称,但它们位于不同的目录中。(


有什么方法可以做到这一点吗?

您应该在项目选项的“C++”部分(“常规”选项卡)的“附加包含目录”中添加一个路径。您可以使用环境变量以及“this folder”(.)快捷方式和“up one folder”(..)快捷方式使此设置不绑定到特定的目录结构。

在项目设置(VS2005/2008中的C/C++下)中,有一个“其他包含目录”选项。您可以使用相对路径在此处添加包含头文件的文件夹


您还可以在IDE级别的工具->选项->项目和解决方案->VC++目录->包含文件中执行此操作。通常,此方法保留用于作为正式库的一部分包含的头。第一个选项通常是首选的,因为它是可移植的(您可以将项目文件发送给另一个开发人员,如果您使用相对/宏路径,他们可以按原样构建项目)。

您需要的是-I标志,并且您提供了目录。。。
如果您有一个Makefile,您应该将其添加到CPP_标志中,类似这样的…

您还可以将INCLUDE变量添加到环境变量中

我不能在Visualstudio的headerfiles部分包含其中的许多文件,因为有些headerfiles具有相同的名称,但它们位于不同的目录中。(,)

这是一个相当大的问题,除非包含这些非唯一命名的头文件的文件与头文件本身位于同一目录中

如果不修改#include指令本身(例如添加相对路径),就无法保证编译器会先定位一个头,再定位另一个头

编辑:看起来Visual Studio将允许您为项目中的每个源文件指定不同的附加包含目录(在解决方案资源管理器中单击源文件并修改C/C++属性)。但我认为这比修改#include指令本身要复杂得多——这取决于您有多少个非唯一的头文件名