C++跨目录include问题

不同文件夹下使用预处理器指示符#include

使用举例

假设我们有如下一个工程,其中包含了几个源代码和头文件,其中main.cpp是主源代码文件,里面含有main函数:

在foldder main中包含:func4.hpp,func4.cpp,文件夹folder1和文件夹folder3

#include "func4.hpp"

 在folder1中包含:main.cpp,func1.hpp,func1.cpp和文件夹func2。

#include "func1.hpp"

在folder2中包含:func2.hpp和func2.cpp

#include "func2.hpp"

在folder1中包含头文件func4.hpp

#include "../func3.h" 
//这里main.c和func3.h不在在同一个文件下,但文件夹main和func3.h同级。"../func3.h"表示main.c上一级文件(base)夹下的func3.h头文件。

在folder1中使用func3.hpp

#include "../folder3/func3.hpp"
//这里main.cpp和func3.hpp不在在同一个文件下,
//但文件夹folder1和文件夹folder3同级。
//![在这里插入图片描述](https://img-blog.csdnimg.cn/39733c0e1e59468a96a7b3730dfebc47.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZOI5Zi7aGFzaA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)"..\folder3\func3.hpp"表示main.cpp上一级文件夹(folder main)下的folder3文件夹下的func4.hpp头文件。

注1:

DOS命令中"cd…“和这里的”…"有类似的作用。
注2: #include “…/folder3/func4.hpp”

    “#include” 可读作 “包含当前源代码或头文件”
    “…” 可读作 “上一级文件夹”
    " " 可读作 “下的”
    “folder3” 可读作 “folder3文件夹”
    “func4.hpp” 可读作 “func4头文件”
    连起来就是: “包含当前源代码或头文件上一级文件夹下的folder3文件夹下的func3头文件”。

注3:

用#include 加载头文件时,"./“表示当前目录,”…/"表示当前目录的上一级目录。注意!这个当前目录不是工程所在的目录,而是该文件所在的目录。
在include中,’/‘与’'的功能貌似一样,#include "…/math/Vector3.h"与#include "…\math\Vector3.h"也貌似等价。

在字符串中,’‘是转义字符,要表示’’,在字符串中应写为’\’,因此"…/A/B/C.exe"与 "…\A\B\C.exe"等价。
 

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

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

相关文章

1.0 十大经典排序算法

分类 算法 本系列算法整理自:https://github.com/hustcc/JS-Sorting-Algorithm 同时也参考了维基百科做了一些补充。 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序&#…

物流单管理系统软件物流单打印,物流单打印模板,佳易王物流快运单管理软件下载

物流单管理系统软件物流单打印,物流单打印模板,佳易王物流快运单管理软件下载 软件试用版下载或技术支持可以点击最下方官网卡片 上图:在物流开单时,可以先输入电话,如果之前存在该托运人信息,则可以一键…

Motion 5 for Mac,释放创意,打造精彩视频特效!

Motion 5 for Mac是一款强大的视频后期特效处理软件,为Mac用户提供了无限的创意可能性。无论你是专业的影视制作人,还是想为个人视频添加独特特效的爱好者,Motion 5都能满足你的需求,让你的视频脱颖而出。 Motion 5提供了丰富多样…

【滑动窗口】将X减到0的最小操作数

将X减到0的最小操作数 1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode) 文章目录 将X减到0的最小操作数题目描述算法原理代码编写Java代码编写C代码编写 题目描述 给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 num…

【HarmonyOS开发】ArkTs编译为SO包的流程记录

1、创建一个Static Library的静态模块 2、编写我们的SO控件 2.1 编译配置 {"apiType": "stageMode","buildOption": {"artifactType": "obfuscation"},"targets": [{"name": "default",&qu…

Linux:查看端口占用的进程

命令 netstat -tunlp可以从图中看到,端口被那个进程占用,对应进程的pid是多少。

dart语言多线程遇到的问题:Isolate.spawnUri(),在真机调试中无法生成隔离

报错原因 [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: IsolateSpawnException: Unable to spawn isolate: Unsupported isolate URI: 未处理的异常:IsolateSpawnException:无法生成隔离:不支持隔离 URI&…

递归实例化导致的栈溢出问题【简直蠢得出奇】

问题描述 今天在练习数据库增删改查,体验三层架构思想时,随便写了点DAO层代码,但服务器运行时竟然爆出了栈溢出的问题,说实话,空指针问题我还能放着耐心去代码里找找问题,但这个栈溢出,我之前就…

Jetson Nano部署YOLOv5与Tensorrtx加速

一、烧录镜像 1、Jetson Nano烧写系统镜像 Jetson Nano是一款形状、外接口类似于树莓派的嵌入式主板,搭载了四核Cortex-A57处理器,GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡,内存为4GB的LPDDR4,存储则为16GB eM…

入侵redis之准备---VMware上面安装部署centos7镜像系统【详细含云盘镜像】

入侵redis之准备—VMware上面安装部署centos7镜像系统【详细含云盘镜像 其他文章: 入侵redis并实现反弹shell控制【实战一】 学习大概步骤如下 第一步:先学习怎么安装部署kail系统服务器 入侵redis之准备—VMware安装部署kail镜像服务器【详细包含云盘镜像】 第二…

计网Lesson6 - IP 地址分类管理

文章目录 1. I P IP IP 地址定义2. I P v 4 IPv4 IPv4 的表示方法2.1 I P v 4 IPv4 IPv4 的分类编址法2.2 I P v 4 IPv4 IPv4 的划分子网法2.2.1 如何划分子网2.2.2 如何确定子网的借位数2.2.3 总结2.2.4 题目练习 2.3 I P v 4 IPv4 IPv4 的无分类编址法 1. I P IP IP 地…

04.里氏替换原则(Liskov Substitution Principle)

暴论:一般的,如果一个富二代不想着证明自己,那么他一辈子都会衣食无忧。 一言 里氏替换原则想告诉我们在继承过程中会遇到什么问题,以及继承有哪些注意事项。 概述 这是流传较广的一个段子: “一个坐拥万贯家财的富二…

亚马逊云科技Aurora MySQL在复制性能提升上的不断优化和尝试

前言 Amazon Aurora是亚马逊云科技自研的云原生关系数据库,它在提供和开源数据库MySQL、PostgreSQL的完好兼容性同时,也能够提供和商业数据库媲美的性能和可用性。 Aurora的性能提升不仅包含应用读写吞吐量的提升,也包含复制延迟的降低。一个…

代码随想录算法训练营第38天| 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

JAVA代码编写 动态规划(Dynamic Programming) 一个问题可以划分为多个子问题,且子问题之间有关联,就可以使用动态规划。 动态规划问题步骤: 确定dp数组(dp table)以及下标的含义确定递推公式…

栈顺序存储的实现(详解)

栈是一种数据结构,它具有后进先出(LIFO)的特性。栈可以用来存储一组元素,并且只能在栈顶进行插入和删除操作。栈的基本概念包括: 1. 入栈(push):将元素添加到栈顶的操作。 2. 出栈&…

图片消除笔哪些软件有?这三款智能消除软件值得收藏

图片消除笔哪些软件有?日常在社交媒体上分享照片或制作海报,广告时,经常会遇到需要删除图片中多余的元素,比如水印、日期、人物等,以便更好的去将这些图片进行二次创作,那么有哪些软件有图片消除笔可以选择…

MySQL5.7安装与配置:自动化一键安装配置

介绍 本文介绍了一个自动化安装MySQL的Shell脚本。该脚本可以帮助用户快速安装MySQL,并自动进行配置和初始化。通过使用该脚本,用户无需手动执行繁琐的安装步骤,大大简化了MySQL的安装过程。 使用shell自动化安装教程 1. 复制脚本 首先&a…

webGIS使用JS,高德API完成简单的智慧校园项目基础

代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, i…

Java研学-配置文件

一 配置文件 1 作用–解决硬编码的问题 在实际开发中,有时将变量的值直接定义在.java源文件中;如果维护人员想要修改数据,无法完成(因为没有修改权限),这种操作称之为硬编码 2 执行原理: 将经常需要改变的数据定义在指定类型的文件中,通过java代码对指定的类型的文件进行操作…

鸿蒙学习之TypeScript 语法理解笔记

1、变量及数据类型 // string&#xff1a;字符串&#xff0c;单引号或双引号 let msg : string hello wprld console.log(msg:msg)// number&#xff1a;数值、整数、浮点let num :number 21console.log(num:num)//boolean&#xff1a;布尔let finished: boolean truecons…