繁体   English   中英

如何包含不带引号的头文件?

[英]How to include header files without quotation marks?

我是编程的新手,所以请放轻松。 无论如何,我都知道要包括您自己定义的头文件。 例如:

#include "yourHeader.h"

我正在尝试将FLTK用于其GUI选项,但是,它的许多头文件都使用包含如下内容的头文件来包含其他头文件:

#include <FL/Blah.h>

代替这个:

#include "FL/Blah.h"

我必须去每个包含在尖括号中的头文件,并将其更改为引号,以使其起作用。 如果重要的话,我目前正在CodeBlocks工作。 有什么方法可以使用尖括号而不是引号包括头文件,还是我不得不自己进入头文件并手动将它们全部换出?

通常,头文件来自

#include "headerfile"

将在当前源路径中搜索。 如果搜索失败,则将其重新处理,就像

#include <header file>

确实。

您的FLTK库是否正在使用包括以下内容?

#include <FL/Blah.h>

FL的父路径应位于预定义的INCLUDE路径中。 您可以编辑Makefile或项目设置。

您可以在编译时将包含所有标头的文件夹添加到包含路径。 如何在Linux中为GCC添加默认包含路径?

一些背景

好的,有两套包含搜索路径。

用户包含路径:
通常,这仅是当前目录(也称为“。”)。
注意:可能是其他,但为简单起见,请仅使用“。” 在下面的示例中。

然后是系统包含路径:
通常在您的计算机中的几个位置(可以是/ usr / include/ usr / local / include )。
注意:可能是其他情况,但为简单起见,仅在以下示例中进行假设。

通常如何运作。

需要注意的是,并非所有的编译器都可以完全一样地工作。 但是以下是一个很好的经验法则。

当您使用引号""包含文件时。

#include "yourHeader.h"

它将在“用户包含路径”中指定的所有目录中搜索此文件。 如果找不到它们,它将在“系统包含路径”指定的所有目录中查找。 因此,您的编译器将搜索以下文件:

./yourHeader.h
/usr/include/yourHeader.h
/usr/local/include/yourHeader.h

它将使用找到的第一个。

在包含中使用<>时:

#include <FL/Blah.h>

它将首先在“系统包含路径”中搜索文件。 然后,取决于您的编译器,可以有选择地搜索“用户包含路径”(但现在不假设)。

因此,在这种情况下,它将搜索文件:

/usr/include/FL/Blah.h
/usr/local/include/FL/Blah.h

它将使用找到的第一个。

修改默认值

因此,这些是将在文件中搜索的默认路径。 但是,编译器将允许您(通常)向这两个搜索路径添加额外的路径。 这取决于您的编译器如何添加搜索路径。

对于gcc(可能还有clang),它使用-I-isystem (可能还有更多)

期望。

当您在include标头中看到<>时,通常意味着这是您要查找的已安装的库。 因此,您的代码假定您的计算机上已经安装了FLTK库。

当您在include标头中看到"" ,应假定它是属于项目的本地文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM