c/c++的头文件是一种很落后的编译机制,大量程序员在这上面浪费了无数生命

理论上,只要两个类之间不存在互相包含的关系,那么编辑就应该能通过

但是头文件机制却给我们造成了无数的麻烦,因为我们还要避免头文件之间的互相包含

比如现在有两个类A,B,分别在a.h b.h里面

如果现在AB都要依赖对方,那么a.h,b.h互相包含肯定是不行的,这个时候只有使用前置声明,但是如果作为类成员使用了对方声明的一个struct呢?

那么只好把这个共用的类提到另一个头文件c.h里面,大家再去包含c.h,这样就产生了一个新的文件

但是如果有更多的类,更多的头文件呢?结果是文件越来越多,改动的代价也越来越大,不胜其烦

这样当然也有一个好处,就是让你的程序的结构跟h文件保持一致性,不过这点好处不能抵消它带来的无数麻烦

转载于:https://www.cnblogs.com/mightofcode/archive/2013/03/27/2984279.html

c++头文件包含问题相关推荐

  1. 【C/C++】头文件包含之#include的2种用法区别

    在C/C++工程中,常会碰到头文件包含的使用,#include <>和#include " "两者之间的区别,简而言之如下: 1. #include <> ...

  2. C++编程中的头文件包含问题

    一,最好在一个头文件中将系统中所有的头文件包含进来,然后在每个头文件中将这个文件引用进来.如在vs环境下就是stdfax.h文件. 二,在每个头文件中用 #ifndef XXXX #define XX ...

  3. C语言之预处理探究(三):头文件包含

    相关博文:C语言之预处理探究(四):#.##和预定义宏 相关博文:C语言之预处理探究(二):条件编译(Condition Compile) 相关博文:C语言之预处理探究(一):宏 参考博文:C语言的头 ...

  4. 嵌入式开发(S5PV210)——u-boot的头文件包含问题

    前言 uboot和kernel的头文件包含比一般的程序更复杂,将头文件的路径用链接来表示,这样的用意是为了程序的可移植性.uboot是高度可移植的,不同的配置和编译指令可以编译出不同Soc和开发板的程 ...

  5. ZT 头文件包含其实是一想很烦琐的工作 第一个原则应该是,如果可以不包含头文件...

    当出现访问类的函数或者需要确定类大小的时候,才需要用头文件(使用其类定义)    http://blog.csdn.net/clever101/article/details/4751717 看到这个 ...

  6. c语言头文件包含嵌套问题和包含原则

    a.h #include<stdio.h> #ifndef _A_H #define _A_H 只是解决头文件重复包含的问题的,但是头文件嵌套包含,就不代表不会出问题,就会关系错综复杂,出 ...

  7. C语言中头文件包含的处理原则

    很多事不深入以为自己懂了,但真正用到项目上,才发现了问题.曾以为自己写C语言已经轻车熟路了,特别是对软件文件的工程管理上,因为心里对自己的代码编写风格还是有自信的.(毕竟刚毕业时老大对我最初的训练就是 ...

  8. 头文件包含【预处理】(58)

    包含的意义 包含的方式 方式<> 方式" " 多文件编程 多文件编程意义 多文件编程的前提 多文件包含实例 定义头文件 谁用谁包含 自包含 避免头文件重复包含 包含的意 ...

  9. c++头文件包含技巧

    C++ 中类的声明和类的定义分开几乎成了一个不成文的规定.这样做的好处是使得类的声明和实现分开,清晰明了,同时便于库函数发布.但是在实际编程中由此也常常 引起了一些由于头文件的包含顺序问题而产生的符号 ...

  10. vscode 头文件包含问题_WSL+VSCode = Linux ?

    官方文档​code.visualstudio.com 使用VSCode新推出的Remote功能来连接WSL或服务器进行开发. 可以在Windows上享受优秀的界面体验的同时使用Linux环境进行开发( ...

最新文章

  1. spring包自动扫描声明
  2. adb查看app的日志
  3. python numpy筛选 总数
  4. Acwing第 36 场周赛【完结】
  5. 深入浅出,对于代理模式的理解(代理模式与外观模式的区别)
  6. jQuery新版本加载json注意事项。
  7. 下面我这个方法可以实现限制某些QQ号登陆,而没有被限制的QQ号可以登陆,不需要借助任何工具。...
  8. 测试人员提高业务掌握度的方案
  9. 汇编观察a++和++a
  10. Android图片控件,跟随列表(recyclerView)的上下滚动而同步平移。
  11. java 使用vue_简单使用vue-cli
  12. 【滤波器】基于matlab高斯滤波器【含Matlab源码 995期】
  13. 移动宽带服务器维护,移动宽带 设置服务器
  14. VUE系列 ---- 网络模块axios(一 )
  15. java吊打面试官系列,java高级程序员面试笔试宝典蔡羽
  16. 第九周项目四----广义表算法库及应用1
  17. (附源码)ssm基于JavaEE的电脑销售管理系统设计与实现 毕业设计021143
  18. SecureCRT背景颜色
  19. 【C#】菜鸟教程学习笔记(二)
  20. 以Fitbit看新智能硬件商业模式

热门文章

  1. 利用Python进行「基金投资组合优化」(一)
  2. TensorFlow第五步:返回起点、深挖坑,解刨一个麻雀。
  3. Acrobat如何修改PDF/A模式下的PDF文档
  4. Maven手工管理项目
  5. mysql报904_EXP-00008:遇到ORACLE错误904问题
  6. python如何给一组数据打标签_给数据集打标签python代码实现(1)
  7. php join查询,thinkphp5模型join关联查询
  8. 关于mysql的教学文章_数据库课程教学方法探索论文
  9. php按时间归档,PHP文章按日期(月日)SQL归档
  10. java jedis_Java操作Redis之Jedis用法详解