不知怎的,这是我多年来第一次在编程中遇到过这个问题,而且我不确定处理它的选项是什么。

我正在将应用程序移植到Linux,并且其中一个目录中有一个头文件,显然与标准C库中的头文件具有相同的名称,当“cstdlib”包含在另一个文件中时它正在尝试包含本地文件,而不是标准库中的正确文件。

特别是,该文件名为“endian.h”,它试图包含在/usr/include/bits/waitstatus.h中。 因此,它不是包含/usr/include/bits/endian.h,而是尝试包含./endian.h。 没有区别

我唯一的选择是将项目中的endian.h重命名为其他东西,或者是否有一种方法可以强制编译器在与首先包含它的文件相同的目录中查找?


编辑:

好吧,这对我来说只是一个愚蠢的错误。 我的Makefile正在设置-I。 ,所以它首先在当前目录中查找。 D'哦。

#1楼 票数:7 已采纳

两者之间有一个重要的区别:

#include "endian.h" // Look in current directory first.

#include <endian.h> // Look in the standard search paths.

如果您想要当前目录中的那个,请使用引号。 如果您想要系统一个,那么使用尖括号。 请注意,如果已通过“-I”标志将当前目录放在include路径中,则两者都可以解析为当前目录中的目录,在这种情况下,不应将“-I”与当前目录一起使用。

#2楼 票数:1

如果您使用“”而不是<>包含文件,则应首先在与包含它的文件相同的目录中查找标头。

但是如果可能的话,重命名文件要好得多恕我直言:如果移动文件,更改构建系统等,它将避免问题......“vs <>依赖于编译器,(也不是C标准表现为g ++吗)。

#3楼 票数:1

也许你可以看看“-I”和“-I-”选项?

  ask by Gerald translate from so

未解决问题?本站智能推荐:

1回复

g ++包含其他目录中的文件

我在名为test的目录中有一个main.cpp文件,该文件具有 文件的结构如下 INIReader.cpp具有以下功能: 我正在尝试用以下代码编译main.cpp 但它不起作用。 像这样的错误 出现。 现在,我正在通过运行命令进行编译,它将可以正常
1回复

g ++在头文件中包含目录

我的.cpp和.h文件的路径: /home/quasiturbine/ServerProject/Network/NetworkIncludes/ 在那里您可以找到TCP_Connexion.h和TCP_Connexion.cpp 在.cpp文件中,我获得了#include "Net
1回复

g ++无法识别包含目录

解决:我不完全确定为什么以及如何,但是当我从-I〜/ dlib-18.18更改为-I ../ dlib-18.18时,它可以工作。 我正在尝试编写一个使用dlib库编译程序的makefile。 我已将库下载并安装在roots目录中。 .cpp文件的标题如下: dlib文件夹
2回复

g ++链接器顺序问题

我试图弄清楚在尝试编译Qt Creator中的代码时导致错误的东西,即在我的外部构建的库中进行链接。 它抱怨“对myclass :: myclass(args)”构造函数的“未定义引用”。 但是,已构建此类,并且目标文件包含在名为common.a的存档中。 引用myclass的
1回复

g++ 编译包含的头文件:没有这样的文件或目录

所以这已经被问了很多次,但我没能在 2 小时内解决我的问题,我希望有人能帮助我,可能只有 1 或 2 个小问题...... 我在我的文件中包含一个 .hpp,vscode 没有问题(配置了包含路径)但是当我尝试编译程序时出现错误:没有这样的文件。 下面的代码片段。 c_cpp_properti
1回复

正确的标志将目录传递给g ++以包含文件

我已经在aws.ami linux上从源代码编译了gcc 5.3.0,以了解有关整个开发编译链的更多信息。 我搜索了几个小时的线程,却没有找到正确的组合来准确了解正在发生的事情。 在.configure --help中,我设置了--includedir=/home/mybin/inclu
1回复

g ++ makefile,包含错误,没有这样的文件或目录

我想包括以下标题: 这些文件位于以下路径中: 在我的Makefile中,我添加了: 但是,当我编译时,我收到如下错误消息: 谁能告诉我这里我做错了什么? 我也包括像你这样的boost库 但是,要获得这些,只需在我的Makefile中执行: 为什么
2回复

如何向G ++编译器解释以读取用于从“列表”文件中搜索.h文件的“包含”目录的列表

也许最好阐明这个问题。 所以我有一个像这样的编译行: 然后,因为main.css坚持要加载“ header.h”,这将在不属于STL的“ search_dir”中查找,所以我需要在编译选项中“包含” search dir,例如: 然后说我有30个搜索目录(search_di