[英]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.