有没有办法检查 C++ 搜索包含的所有位置?我想了解为什么找到了一些包含而没有找到其他包含。
编辑:平台是 Linux,g++
16.2 [cpp.include] 为 C++ 定义了这个;C中的语言几乎相同。
#include <header.h>
在一组实现定义的位置中搜索具有该名称的“标题”。这个“头文件”不必是文件;它可能是编译器神奇地知道的东西。
#include "header.h"
还搜索一组实现定义的位置,但它会查找名为“header.h”的文件。如果该搜索失败,它会将指令视为#include <header.h>
.
许多编译器通过查看“当前目录”来实现第二次搜索,对于某些编译器来说,这意味着启动编译器的目录,而对于其他编译器来说,则意味着包含#include
指令的文件所在的目录。
一般来说,您应该为您的标题使用引用的表格;尖括号,因为它们不需要文件,应该留给实现使用。并不是说为您自己的标题使用尖括号不起作用,但它是反主题的。