对于一些知名的第三方库,例如Boost,它们通常安装在系统上的特定路径中,而对于其他第三方库,它们通常使用CMake的FetchContent命令直接从Git存储库获取,并放置在当前项目目录中的某个位置.对于这两种情况,应该使用#INCLUDE还是#INCLUDE"文件名"

推荐答案

C标准让C实现来指定如何在文件中搜索include条指令,如果对#include "filename"表单的初始搜索失败,则约束条件是#include "filename"变为#include <filename>.

然而,通常将#include <filename>用于C实现提供的头、操作系统和由系统提供的第三方头(例如由系统管理员安装的头),并使用#include "filename"用于作为软件项目一部分的头.对于用户安装的第三方文件, Select 就不那么明确了.但是,对于安装在项目目录树中的第三方文件,#include "filename"表单更合适.

尽管如此,您可以使用合适的编译器switch 使这两种形式中的任何一种都工作.

C++相关问答推荐

有什么方法可以检测SunOS上的SparcWorks吗?

当包含头文件时,gcc会发出隐式函数声明警告

在C中使用强制转换将uint16_t转换为uint8_t [2]是否有效?

将指针作为参数传递给函数

ARM64 ASIMD固有的加载uint8_t* 到uint16x8(x3)?

在传统操作系统上可以在虚拟0x0写入吗?

进程已完成,退出代码为138 Clion

在基本OpenGL纹理四边形中的一个三角形中进行渲染

Cairo STM32MP1 cairo_Surface_WRITE_TO_PNG始终返回CAROLIO_STATUS_WRITE_ERROR

条件跳转或移动取决于未初始化值(S)/未初始化值由堆分配创建(Realloc)

为什么我无法访问C语言中的文件

try 查找带有指针的数组的最小值和最大值

即使我在C++中空闲,也肯定会丢失内存

存储和访问指向 struct 的指针数组

被调用方函数内部的C-Struct变量,它是指针还是无关紧要

即使客户端不发送数据,也会发生UNIX套接字读取

C Makefile - 如何避免重复提及文件名

GDB 用内容初始化数组

比 * 更快的乘法

int 与 size_t 与 long