当我说#include <xyz.h> </xyz.h>时,如何告诉预处理器搜索头文件的特定文件夹

时间:2009-06-01 12:31:52

标签: c include visual-studio-2005 c-preprocessor

我有大约120个头文件(.h文件),并且在所有这些文件中都包含许多使用#include <abcd/xyz.h>的其他头文件,但是当我将.h文件保存在特定文件夹中时,预处理器正在生成filenotfound错误。

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

一种方法是将#include <abcd/xyz.h>设为#include "abcd/xyz",但我需要在所有包含语句的头文件中执行此操作,并且有数百个。

我不能在Visualstudio的headerfiles部分中包含很多它们,因为一些头文件具有相同的名称,但它们位于不同的目录中。 (<abcd/xyz.h><efgh/xyz.h>)。

有什么办法吗?

5 个答案:

答案 0 :(得分:4)

您应该在项目选项的“C ++”部分(“常规”选项卡)中的“附加包含目录”中添加路径。您可以使用环境变量以及此文件夹的“此文件夹”(。)快捷方式和“向上一个文件夹”(..)快捷方式,以便不绑定到某个目录结构。

答案 1 :(得分:2)

  

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

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

您无法保证编译器会在不修改#include指令本身的情况下找到一个标头(并添加相对路径作为示例)。

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

你要找的是-I标志,你给目录... 如果你有一个Makefile,你应该把它添加到CPP_FLAGS那样......

答案 4 :(得分:0)

您还可以向环境变量添加INCLUDE变量。