c++避免头文件多次包含的方法

news2024/11/25 19:04:02

c++避免头文件多次引用的方法

  • 方法1
  • 方法2
  • 例子
    • 头文件包含多次导致类重定义
    • 使用方法1避免重复定义
    • 使用方法2避免重复定义

方法1

#pragma once指令放在文件的开头

方法2

用 #ifndef 条件编译指令。

#ifndef _GIRL_
    #define _GIRL_
    //代码内容。
#endif 

在这里插入图片描述

例子

头文件包含多次导致类重定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类的头文件直接或者间接被包含了多次,导致类的重定义

使用方法1避免重复定义

在这里插入图片描述
在这里插入图片描述
主函数:
在这里插入图片描述

使用方法2避免重复定义

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在类的定义的时候加上条件编译指令,不管头文件被包含多少次,里面的代码只能被包含一次

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

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

相关文章

用百度地图api获取当前定位,获取经纬度——前端笔记

问题&#xff1a; 做一个按钮&#xff0c;点击后可以获取到当前位置的经纬度&#xff0c;并渲染地图。 效果如下: 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>获取当前定位测试<…

极智开发 | ubuntu交叉编译aarch64 boost

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多经验分享 大家好&#xff0c;我是极智视界&#xff0c;本文介绍一下 ubuntu交叉编译aarch64 boost。 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xf…

目录穿越漏洞

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录穿越漏洞 目录穿越漏洞 目录穿越不仅可以访问服务器中的任何目录&#xff0c;还可以访问服务器中任何文件的内容。例如&#xff0c;攻击者通过浏览器访问…/……

ES6 Generator和Promise

目录 Generator 如何创建Generator函数 ? 模拟发起异步请求 Promise 实例化 实例方法 工厂函数 静态方法 Promise.all([p1,p2,....]) Promise.race([p1,p2,....]) Promise.any([p1,p2,....]) Promise.allSettled([p1,p2,....]) Generator Generator是ES6提供的一种…

Day56|583. 两个字符串的删除操作 、72. 编辑距离

583. 两个字符串的删除操作 1.题目&#xff1a; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 "sea", word2 "eat" 输出: …

SSD 常用概念

1. 写入放大&#xff08;WA&#xff09; 写入放大会对闪存 P / E 次数造成磨损。在存储过程中&#xff0c;数据会在闪存上被反复的移动整理&#xff0c;造成闪存上的写入量大于实际文件写入量&#xff0c;这个过程称为写放大。 写放大 主控实际写入的数据量 / 用户想要写入的数…

GDB调试——学习笔记

文章目录 GDB是什么GDB调试的一般步骤1. 编译生成带源代码信息的可执行文件2. 启动调试3. 进行调试&#xff1a;设置断点、查看变量、寻找BUG4. 退出调试 GDB是什么 GDB就是一个程序代码调试的工具。 GDBGCC开发环境 GDB调试的一般步骤 1. 编译生成带源代码信息的可执行文件…

机器学习1

核心梯度下降算法&#xff1a; import numpy as np from utils.features import prepare_for_trainingclass LinearRegression:def __init__(self,data,labels,polynomial_degree 0,sinusoid_degree 0,normalize_dataTrue):"""1.对数据进行预处理操作2.先得到…

【Linux】进程信号 -- 信号产生 | 系统调用、硬件、软件的信号发送

信号的旧识引入信号引入signal调用 系统调用向目标进程发送信号模拟实现一个kill命令raise给自己发送任意信号abort给自己发送指定信号(6)SIGABRT 硬件异常产生信号除0异常野指针访问异常 软件条件产生信号拓展 总结思考进程退出时核心转储问题小实验 信号的旧识引入 kill -l是…

手动实现 Tomcat 底层机制+ 自己设Servlet 问题分析

文章目录 手动实现 Tomcat 底层机制 自己设Servlet问题分析完成小案例运行效果 此项目用maven至于怎么配置在下一篇文章创建cal.htmlCalServlet.java# 实现步骤 web.xmlWebUtils 问题:Tomcat 整体架构分析测试分析&#xff1a;抓包情况 手动实现 Tomcat 底层机制 自己设Servlet…

ALPAGASUS : TRAINING A BETTER ALPACA WITH FEWER DATA♢

ALPAGASUS : TRAINING A BETTER ALPACA WITH FEWER DATA♢ IntroductionMethod参考 Introduction 本文证明了数据的质量的重要性要大于数量。作者通过与GPT交互的方法过滤了Alpaca52k的数据&#xff0c;剩下9k&#xff0c;对二者分别微调&#xff0c;通过实验对比&#xff0c;…

软件测试行业的困境和迷局

中国的软件测试虽然起点较高&#xff0c;但是软件测试的发展似乎没有想象中那么顺利。 其实每个行业除了有自身领域外&#xff0c;还有属于自己的“生态系统”。属于软件测试的生态系统主要包括后备软件测试人员、软件开发人员和软件管理决策者。后备软件测试人员是软件测试的…

获取gitlab上项目列表过程及脚本

一、使用Gitlab API查询项目列表 1、首先获取访问令牌&#xff1a;在Gitlab上生成一个访问令牌&#xff0c;以便能够使用API进行身份验证。可以在GitLab的用户设置中创建一个访问令牌。 2、使用curl发送GET请求的命令&#xff1a; curl --header "PRIVATE-TOKEN: <you…

若依字典使用

若依字典使用 此文章使用的若依是大于3.7.0版本的 JS文件配置 main.js中引入全局变量和方法 import DictData from /components/DictData DictData.install()DictData.js配置 可以从DictData.js中看出在install方法中调用了字典查询接口&#xff0c;在install方法中可以做…

Atom配置Java开发环境

第1步&#xff1a; 从Oracle网站下载安装最新的Java开发包&#xff08;JDK&#xff09; 将JDK添加到环境变量中 参考链接&#xff1a;传送门1&#xff08;外网&#xff09;&#xff0c; 传送门2&#xff08;国内&#xff09; 第2步&#xff1a;现在要在Atom编辑器上运行Jav…

【C++修炼之路】list 模拟实现

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、读源码二、成员三、默认成员函数1、构造2、析构3、拷贝构造4、赋值重载 四、迭代器五、其他接口 如果无聊的话&#xff0c;…

Pytorch自动求导机制详解

目录 1. 自动求导 1.1 梯度计算 1.1.1 一阶导数 1.1.2 二阶导数 1.1.3 向量 1.2 线性回归实战 1. 自动求导 在深度学习中&#xff0c;我们通常需要训练一个模型来最小化损失函数。这个过程可以通过梯度下降等优化算法来实现。梯度是函数在某一点上的变化率&#xff0c;可以告…

vue代码格式化,Prettier - Code formatter格式化规则文件

vue2&#xff0c;vue3格式化代码使用方法&#xff1a; 1、新建文件名&#xff1a; .prettierrc.cjs&#xff0c;里面放上下面的代码片段&#xff0c;直接粘贴即可 2、把 .prettierrc.cjs文件放在项目的根目录中 // prettier的默认配置文件 module.exports {// 一行最多 100 …

Final Cut Pro中文新手教程 (52绿幕抠图)FCPX透明通道基础使用方法

今天小编为大家分享的是FCPX透明通道基础教程&#xff0c;究竟什么是透明通道呢&#xff1f;透明通道就是一个阿尔法(alpha)通道&#xff0c;也叫做通明阿尔法通道。只要带有alpha的图片或者视频&#xff0c;他们的背景就是透明的只会显示他们的形状和内容。这种技术经常应用在…

VLAN :虚拟局域网

目录 VLAN&#xff1a;虚拟局域网 VLAN种类&#xff1a; 接口分配链路类型 接口划分VLAN 跨网段的通讯 VLAN&#xff1a;虚拟局域网 LAN &#xff1a;局域网 MAN&#xff1a;城域网 WAN&#xff1a;广域网 1.一个VLAN相当于一个广播域 VLAN&#xff1a;通过路由器和交换机…