我是编程的新手,所以请放轻松。无论如何,我都知道要包括您自己定义的头文件。例如:
#include "yourHeader.h"
我正在尝试将FLTK用于其GUI选项,但是,它的许多头文件都使用包含如下内容的头文件来包含其他头文件:
#include <FL/Blah.h>
代替此:
#include "FL/Blah.h"
我必须转到每个包含在尖括号中的头文件,然后将其更改为引号以使其起作用。如果重要的话,我目前正在CodeBlocks工作。有什么方法可以使用尖括号而不是引号包括头文件,还是我不得不自己进入头文件并手动将它们全部换掉?
答案 0 :(得分:1)
通常,头文件来自
#include "headerfile"
将在当前源路径中搜索。如果搜索失败,将对其进行重新处理,就像
#include <header file>
确实。
您的FLTK库正在使用包含以下内容的内容吗?
#include <FL/Blah.h>
FL的父路径应位于预定义的INCLUDE路径中。您可以编辑Makefile或项目设置。
答案 1 :(得分:0)
您可以在编译时将包含所有标头的文件夹添加到包含路径。 How to add a default include path for GCC in Linux?
答案 2 :(得分:0)
好的,包含搜索路径有两组。
用户包含路径:
通常这只是当前目录(也称为“。”)。
注意:可能是其他,但为简单起见,请仅使用“。”在下面的示例中。
然后有系统包含路径:
通常在您计算机中的几个位置(可以是 / 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
库已经安装在您的计算机上。
在包含标头中看到""
时,应假定它是属于项目的本地文件。