记录 | 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…

将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笔记保…

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;如果要尽可能的满足孩子的胃口…

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

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

想做新程序员?马上用 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 …

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

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

【Animatediff】制作 玫瑰,鲜花, 香水, 动态LOGO (结尾》图片停留)

提示&#xff1a;也可以后期加入文字。 电商\lofi_v4.safetensors [9462506675] 》制作初始图片 1&#xff1a;输入提示词 流动的烟雾&#xff0c;飘落的花瓣&#xff0c;优雅的香水瓶周围环绕着柔软的钻石&#xff0c;烟&#xff0c;红色浪漫的玫瑰:1.5,柔和的背光营造梦幻的效…

解决el-table组件中,分页后数据的勾选、回显问题?

问题描述&#xff1a; 1、记录一个弹窗点击确定按钮后&#xff0c;table列表所有勾选的数据信息2、再次打开弹窗&#xff0c;回显勾选所有保存的数据信息3、遇到的bug&#xff1a;切换分页&#xff0c;其他页面勾选的数据丢失&#xff1b;点击确认只保存当前页的数据&#xff1…

VUE中监听企业开发实践

背景&#xff1a;我干哦&#xff01;最近需求是让中英文翻译vue页面&#xff0c;我这个后端哪里会哦&#xff0c;这不遇见了一个棘手的问题&#xff0c;我描述下&#xff1a;上面是一个list 根据查询到的值进行判断显示&#xff0c;如果是z就显示主信息&#xff0c;其他的ABC正…

动能方案 | 技术引领未来:两轮电动车遥控解锁方案探秘

随着电动交通工具的快速普及&#xff0c;创新性的智能解锁系统正在为两轮电动车带来更便捷、安全的使用体验。本文将深入介绍一种先进的两轮电动车遥控解锁方案&#xff0c;探讨其优势&#xff0c;并推荐一款先进的芯片技术&#xff0c;引领行业未来。 01方案介绍 1、技术原…

短剧成为今年最火赛道,短剧分销系统怎么开发?

近两年来是短剧的爆发期&#xff0c;迎来了飞速发展阶段&#xff0c;也成为了2023年最赚钱的赛道。再这样的发展下&#xff0c;短剧行业吸引了无数人进入市场。 目前&#xff0c;短剧变现的方式主要有两个&#xff0c;一种是拍短剧&#xff0c;就是成为导演或者演员&#xff1…

分享5款简单而高效的小工具

​ 在这个繁忙的时代&#xff0c;简单而高效的工具成为生活和工作中的宝贵助手。以下是五款小巧而实用的小工具&#xff0c;或许正是你所需的生活小搭档。 1.远程终端——MobaXTerm ​ MobaXTerm是一款集成了多种网络工具的远程终端软件&#xff0c;可以通过SSH、Telnet、RDP…

解读远程工作设计师之未来与发展

引言 在数字化的浪潮下&#xff0c;“远程工作”已经成为现代职场的一个重要趋势。对于设计师来说&#xff0c;这不仅是一种工作方式的转变&#xff0c;更是职业发展的新机遇。在这篇文章中&#xff0c;我将从以下9个方面&#xff0c;深入探讨远程工作设计师的机会、市场和职位…

WordPress主题 响应式个人博客主题Kratos源码

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题&#xff0c;整体布局简洁大方&#xff0c;针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c; 主…

RHEL8_Linux_Ansible常用模块的使用

本章主要介绍Ansible中最常见模块的使用 shell模块文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下。 ansible 机器名 -m 模块x -a "模块的参数" 对被管理机器执行不同的操作&#xff0c;只需要调用不同的模块…