iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中怎么重用头文件
  • 320
分享到

C++中怎么重用头文件

2023-06-17 16:06:12 320人浏览 安东尼
摘要

这篇文章给大家介绍c++中怎么重用头文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在实际编程中,不同的类一般是放在不同的相互独立的C++头文件中的,这样两个类在相互引用时又会有不一样的问题。重复编译是问题出现的根本

这篇文章给大家介绍c++中怎么重用头文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

在实际编程中,不同的类一般是放在不同的相互独立的C++头文件中的,这样两个类在相互引用时又会有不一样的问题。重复编译是问题出现的根本原因。为了保证头文 件仅被编译一次,在C++中常用的办法是使用条件编译命令。

Example:  animal.h   class animal   {   ......  };   animal.cpp   #include "animal.h"   #include <iOStream.h>   ......  fish.h   #include "animal.h"   class fish  {   ......   };   fish.cpp   #include "fish.h"   #include <iostream.h>   ......  main.cpp   #include "animal.h"   #include "fish.h"   void main()   {   ......  }

编译文件,会出现class type redefinition的错误

为什么会出现类重复定义的错误呢?请读者仔细查看EX10.cpp文件,在这个文件中包含了animal.h和fish.h这两个头文件。当编译器编译EX10.cpp文件时,因为在文件中包含了animal.h头文件,编译器展开这个C++头文件,知道animal这个类定义了,接着展开fish.h 头文件,而在fish.h头文件中也包含了animal.h,再次展开animal.h,于是animal这个类就重复定义了。

要解决C++头文件重复包含的问题,可以使用条件预处理指令。修改后的头文件如下:

animal.h   #ifndef ANIMAL_H_H   #define ANIMAL_H_H   class animal   {   ......  };   #endif   fish.h   #include "animal.h"   #ifndef FISH_H_H   #define FISH_H_H   class fish  {   ......   };   #endif

我们再看EX10.cpp的编译过程。当编译器展开animal.h头文件时,条件预处理指令判断ANIMAL_H_H没有定义,于是就定 义它,然后继续执行,定义了animal这个类;接着展开fish.h头文件,而在fish.h头文件中也包含了animal.h,再次展开 animal.h,这个时候条件预处理指令发现ANIMAL_H_H已经定义,于是跳转到#endif,执行结束。

但是不要以为使用了这种机制就全部搞定了,比如在以下的代码中:

//文件A.h中的代码  #pragma once  #include "B.h"  class A  {  public:  B* b;  };  //文件B.h中的代码  #pragma once  #include "A.h"  class B  {  public:  A* a;  };

这里两者都使用了指针成员,因此嵌套本身不会有什么问题,在主函数前面使用#include "A.h"之后,主要编译错误如下:

error C2501: 'A' : missing storage-class or type specifiers

仍然是类型不能找到的错误。其实这里仍然需要前置声明。分别添加前置声明之后,可以成功编译了。代码形式如下:

//文件A.h中的代码  #pragma once  #include "B.h"  class B;  class A  {  public:  B* b;  };  //文件B.h中的代码  #pragma once  #include "A.h"  class A;  class B  {  public:  A* a;  };

关于C++中怎么重用头文件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: C++中怎么重用头文件

本文链接: https://www.lsjlt.com/news/290943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中怎么重用头文件
    这篇文章给大家介绍C++中怎么重用头文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在实际编程中,不同的类一般是放在不同的相互独立的C++头文件中的,这样两个类在相互引用时又会有不一样的问题。重复编译是问题出现的根本...
    99+
    2023-06-17
  • c++如何防止头文件重复引入
    这篇文章将为大家详细讲解有关c++如何防止头文件重复引入,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C 语言中如何使用宏定义(#ifndef / #define / #endif)来有效避免头文件被重复...
    99+
    2023-06-06
  • C++怎样编写头文件
    今天就跟大家聊聊有关C++怎样编写头文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我们之前做的左右示例都是在一个单独的cpp文件当中完成的,当我们要做一个相对复杂或大型的项目时,...
    99+
    2023-06-22
  • C语言中常用的头文件是什么
    这篇文章主要介绍“C语言中常用的头文件是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中常用的头文件是什么”文章能帮助大家解决问题。1.<stdio.h>:定义了输入输出函数、...
    99+
    2023-06-17
  • VScode中添加头文件和源文件(C/C++)的方法
    目录一.在相同文件夹下二.在不同文件夹下总结一.在相同文件夹下 在正常情况下,若同一文件夹下若头文件、源文件、和主要代码在同一文件夹下,则可以正常运行程序。 如图(此为Visual ...
    99+
    2022-11-13
    vscode如何添加头文件 vs添加头文件与源文件 vs code添加头文件
  • 详解C++中的万能头文件
    目录一、什么是万能头文件?二、源码三、编译器找不到 bits/stdc++.h一、什么是万能头文件? C++的万能头文件是: #include <bits/stdc++.h&g...
    99+
    2023-02-13
    C++万能头文件 C++头文件
  • C++头文件和cpp文件的原理是什么
    这篇文章主要介绍“C++头文件和cpp文件的原理是什么”,在日常操作中,相信很多人在C++头文件和cpp文件的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++头文件和cpp文件的原理是什么”的疑...
    99+
    2023-07-05
  • C++头文件中包含哪些内容
    C++头文件中包含哪些内容,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C++头文件之C、传统 C++ #include < assert.h&g...
    99+
    2023-06-17
  • C/C++中文件IO函数怎么用
    这篇文章主要为大家展示了“C/C++中文件IO函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C/C++中文件IO函数怎么用”这篇文章吧。文件(file)通常是在磁盘或固态硬盘上的一段已...
    99+
    2023-06-29
  • C++头文件algorithm中的函数功能详解
    目录1. 不修改内容的序列操作(1)all_of(2)any_of(3)none_of(6)find_if(7)find_if_not(8)find_end(10)adjacent_...
    99+
    2022-11-12
  • C#中怎么读取文件夹中的文件
    本篇文章为大家展示了C#中怎么读取文件夹中的文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#读取文件夹的操作是如何进行的呢?首先让我们来看啊可能:读出一个文件夹中的所有文件(文件数从0个到N多...
    99+
    2023-06-18
  • wps怎么制作红头文件
    要制作红头文件,可以使用WPS软件来完成。下面是具体的步骤:1. 打开WPS软件,进入“WPS文字”界面。2. 点击菜单栏上的“文件...
    99+
    2023-09-29
    wps
  • C++中怎么获取文件
    本篇文章给大家分享的是有关C++中怎么获取文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  char *txt = NUL...
    99+
    2023-06-17
  • C#中怎么处理文本文件
    这期内容当中小编将会给大家带来有关C#中怎么处理文本文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#处理文本文件C#处理文本文件是一种常用的文件格式,所以如何处理文本文件也就成为编程的一个重点。本文...
    99+
    2023-06-18
  • C++中怎么读写文本文件
    C++中怎么读写文本文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++读写文本文件代码示例如下:#include < iostr...
    99+
    2023-06-17
  • C#中怎么读取文本文件
    C#中怎么读取文本文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#读文本文件的解答:  string str = &qu...
    99+
    2023-06-18
  • C#中怎么操作文本文件
    这篇文章给大家介绍C#中怎么操作文本文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#操作文本文件演练实例浅析 using System;  using Syste...
    99+
    2023-06-17
  • 如果在vs中安装C++万能库头文件
    本篇文章为大家展示了如果在vs中安装C++万能库头文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、C++万能库是什么?C++万能库的定义:简而言之,就是一条语句代替了多条语句,包含了目前c++...
    99+
    2023-06-06
  • 怎么用 C++ 读写文件
    这篇文章主要讲解了“怎么用 C++ 读写文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用 C++ 读写文件”吧!在 C++ 中,对文件的读写可以通过使用输入输出流与流运算符 ...
    99+
    2023-06-15
  • c#中怎么使用FileStream读写文件
    在C#中使用FileStream读写文件,可以按照以下步骤进行操作:1. 创建FileStream对象:首先需要创建一个FileSt...
    99+
    2023-09-13
    c# FileStream
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作