记录 | C++头文件中 <> 和 ““ 的区别

C++ 头文件中 <> 和 “” 的区别

#include <cstdio>
#include "hello.h"int main(){printf("hello world!");return 0;
}

<cstdio> 这种形式表示不要在当前目录下进行搜索,只在系统目录里搜索;
"hello.h" 这种形式则优先搜索当前目录下有没有这个文件,找不到再进行搜索系统目录;
所以一般自己写的头就用 "" 来包,系统提供的头就用 <> 来包

需要注意的是,上面的程序中,当然也可以把 #inlucde <cstdio>"" 来包,写成 #include "cstdio",这样先会在当前目录下找一下有没有 cstdio,没有的话再到系统目录里找。但是存在一些风险,比如我就恰好在当前目录下就有一个 脏数据的 cstdio,那么程序编译就会出错了


还有个相对路径的例子

这个工程
在这里插入图片描述

外面的 CMakeLists.txt 长这样:
在这里插入图片描述

子工程 hellolib 里面的 CMakeList.txt 长这样:
在这里插入图片描述

hello.cpp 的代码长这样:
在这里插入图片描述

可以看到在 子工程里的 CMakeList.txt 中不用这么写:

add_library(hellolib STATIC hello.cpp hello.h)  // 不用写 hello.h

正是因为 #include "hello.h" 它会自动先在当前目录下找


还有个问题

按着上面的例子,来看

最开始的 main.cpp 长这样,头是这么包的 => #include "hellolib/hello.h"
在这里插入图片描述

之前的外面的 CMakeList.txt 是长这样的:

在这里插入图片描述

接下来魔法来了,我加一句 target_include_directories(a.out PUBLIC hellolib)

在这里插入图片描述

通过 target_include_directories 来指定要包的头文件的目录,这样用 target_include_directories 指定的路径会被视为与系统路径等价,这样就可以这么来包 hello.h
在这里插入图片描述

上面这样包完全没有问题,相当于会去系统路径下找 hello.h

当然也可以这么包,相当于会去 target_include_directories 指定的路径下去找 hello.h

在这里插入图片描述

当然也可以像最开始那样包 hello.h,也能够找到 hello.h
在这里插入图片描述

但是你需要清楚,三种方式的原理是不一样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音视频:Ubuntu下安装 FFmpeg 5.0.X

1.安装相关依赖 首可选一&#xff1a; sudo apt-get update sudo apt-get install build-essential autoconf automake libtool pkg-config \libavcodec-dev libavformat-dev libavutil-dev \libswscale-dev libresample-dev libavdevice-dev \libopus-dev libvpx-dev libx2…

Html基础与表单案例

<!DOCTYPE html> <html> <head> <meta charset"UTF-8" /> <title>Html</title> </head> <body> <!-- HTML的定义&#xff1a;HTML是超文本标记语言 超文本就是链接&#xff0c;标记也叫标签&#xff0c;带尖…

将yolo格式转化为voc格式:txt转xml(亲测有效)

1.文件目录如下所示&#xff1a; 对以上目录的解释&#xff1a; 1.dataset下面的image文件夹&#xff1a;里面装的是数据集的原图片 2.dataset下面的label文件夹&#xff1a;里面装的是图片对应得yolo格式标签 3.dataset下面的Annotations文件夹&#xff1a;这是一个空文件夹&…

如何在使用Docker快速部署StackEdit并实现公网访问本地编辑器远程办公

文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器&#xff0c;在GitHub上拥有20.7k Star&#xff01;&#xff0c;它支持将Markdown笔记保…

如何在Linux命令行下发送和接收UDP数据包

众所周知,在传输层有两个常用的协议 TCP 和 UDP,本文介绍在 Linux 命令行下,如何使用 nc 命令发送或接收 UDP 数据包,这些命令的用法对调试 UDP 通信程序将有所帮助,本文适合初学者阅读。 1. 问题的提出 编写了一个使用 raw socket 在数据链路层接收原始 UDP 数据包的程序…

Leetcode 2968. Apply Operations to Maximize Frequency Score

Leetcode 2968. Apply Operations to Maximize Frequency Score 1. 解题思路2. 代码实现 题目链接&#xff1a;2968. Apply Operations to Maximize Frequency Score 1. 解题思路 这题说来惭愧&#xff0c;一开始自己没有搞定&#xff0c;不过看了大佬们的解答之后发现多少有…

本地声明式缓存

SpringBootCaffeineRedis声明式缓存 最近接到一个项目&#xff0c;里面同时整合了Caffeine和Redis。 对于像验证码&#xff0c;或者对用户操作做一些限制的缓存&#xff0c;还有分布式锁等等操作就利用redis来缓存&#xff0c; 对于一些热点数据&#xff0c;为了降低数据库查…

Java语言真的跌落神坛了吗?

Java语言真的跌落神坛了吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「 Java的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#…

居民建筑能耗现状以及节能降耗方向

1我国居住建筑能耗统计情况 我国民用建筑能耗统计工作起步较晚。为了解和掌握民用建筑能源消耗情况&#xff0c;2007年住房和城乡建设部发布了《民用建筑能耗统计报表制度》(试行)[建科函(2007)271号]&#xff0c;自此我国民用建筑能耗统计工作正式展开&#xff0c;而城镇居住…

新增数据,某个字段的值总是保存不上问题解决

在系统中新增一条数据&#xff0c;某个字段的数据总是保存不上&#xff0c;但是没有报任何异常和错误&#xff0c;其他字段也都是正常的&#xff0c;通过抓包分析请求参数发现那个字段的值也没有传给后端&#xff0c;检查了前后端代码也没有排查到问题。百思不得其解&#xff0…

【算法与数据结构】455、LeetCode分发饼干

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;因为大饼干可以满足大胃口的孩子也必然可以满足小胃口的孩子&#xff0c;如果要尽可能的满足孩子的胃口…

Git的rebase和merge合并代码的区别

引言 Git的中rebase和merge都可以合并代码&#xff0c;那他们有什么相同和不同呢&#xff1f;本文来一次说清楚、说明白。 首先Git中的rebase和merge都是用于合并代码的方式&#xff0c;但它们有不同的工作原理和影响。 Merge&#xff08;合并&#xff09; 合并&#xff08;…

【智慧之窗】AI驱动产品探索

一.初识 ChatGPT ChatGPT 是由 OpenAI 开发的自然语言处理&#xff08;NLP&#xff09;模型&#xff0c;基于 GPT&#xff08;Generative Pre-trained Transformer&#xff09;架构。GPT 系列的模型旨在理解和生成自然语言文本。ChatGPT 专注于支持对话性任务&#xff0c;即与…

java的json解析

import com.alibaba.fastjson.*; public class JsonParser { public static void main(String[] args) { String jsonStr "{\"name\":\"John\", \"age\":30}"; // JSON字符串示例 // 将JSON字符串转换为JSONObject对象 JSONObje…

想做新程序员?马上用 GPT-4 编程,一切我们都替你搞好了!

// 打不过就加入。与其担心被 GPT-4 取代&#xff0c;不如现在就学习驾驭它。 &#xff08;GPT-3.5 和其他模型都不用怕&#xff0c;它们都不行&#xff0c;谁用谁知道……除了 Claude 我们还在测试中&#xff09; 文末有一键加入方法&#xff0c;国内用户也能无障碍使用—…

Ubuntu 20.04 prometheus prometheus-process-exporter

prometheus-process-exporter 监控系统架构方案 https://blog.csdn.net/weixin_45801289/article/details/126922395 sudo apt install prometheus-process-exporter prometheus-process-exporter_0.4.0ds-1_amd64.deb service prometheus-process-exporter status netstat …

中国一重集中采购平台的建设经历和系统亮点

中国一重前身为第一重型机器厂&#xff0c;是“一五”期间建设156项重点工程项目之一&#xff0c;始建于1954年&#xff0c;是中央管理的涉及国家安全和国民经济命脉的国有重要骨干企业之一&#xff0c;是国家创新型试点企业、国家高新技术企业&#xff0c;拥有国家级企业技术中…

大语言模型--数据

数据 大语言模型 数据WebText和OpenWebText数据集Colossal Clean Crawled Corpus&#xff08;C4&#xff09;Benchmark的数据污染问题GPT-3的数据集The Pile数据集 WebText和OpenWebText数据集 WebText数据集被用于训练GPT-2模型。其目标是获取既多样化又高质量的数据集。以前…

漏洞复现-iDocview doc/upload接口存在任意文件读取漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…