当前位置: 首页 > news >正文

关于头文件的一切

头文件的害处

  • 传递性。头文件可以再包含其他头文件。一个简单的#include<complex>展开后有两万多行代码,一方面造成编译缓慢;另一方面,任何一个头文件的改动一点点代码都会需要重新编译所有直接或间接包含它的元文件。因为Buildtool无法有效判断这个改动是否影响程序语义,保守起见只能把受影响文件全部重新编译一遍
  • 顺序性,一个源文件可以包含多个头文件。如果头文件内容组织不当会造成程序的语义跟头文件包含的顺序有关,也跟是否包含一个头文件有关,通常的做法是把头文件分成几类,然后分别按顺序包含着这几类头文件,相同的头文件按文件名顺序排列。这样一方面源码比较简洁,另一方面如果两个人同时修改源码,各自想多包含一个头文件,那么造成冲突的可能性较小,一般应该避免在#include列表的末尾添加新的头文件,这样很快代码的依赖关系就无法管理
  • 差异性。内容差异性造成不同源文件看到的头文件不一致,时间差异造成头文件与库文件内容不一致。这说明两个源文件应该用统一的编译选项。如果程序用到了第三方静态库或动态库,除了拿到头文件和库函数,我们还可以拿到当时编译这个库的编译选项,才能安全无误使用这个程序库。

反观现代的编译语言,他们比C++的历史包袱轻得多,模块化做的也比较好。模块化的做法主要有两种:

  • 对于解释性语言,impoet的时候直接把对应模块的源文件解析一便(不再是简单地把源文件包含进来)
  • 对于编译性语言,编译出来的目标文件里直接包含了足够的元数据,import的时候只需要读目标文件的内容,不需读源文件。

这两种做法都避免了声明预定义不一致的问题,因为在这些语言里声明和定义是一体的。同时这种import手法也不会引入不想要的名字,简化了名字查找的负担,也不用担心import的顺序不同造成代码功能的变化

头文件的使用规则

  • 将文件间的编译依赖降至最小
  • 将定义是之间的依赖降至最小
  • 让class名字,头文件名字,源文件名字直接相关。这样方便源代码的定位。
  • 令头文件自给自足

http://www.taodudu.cc/news/show-6111852.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 我自己的头文件入门
  • 计算机里FC方式,谁知道头文字D里提到的FD,FR,FC,FF指的是什么驱动方式的车?...
  • “头文件“
  • 坐南京13路公交车,体验《头文字D》感觉!
  • 头文字D美图
  • 头文件大全
  • 头文件知多少?
  • 文件头编码
  • 头文件我来啦
  • m=m++到底发生了什么
  • 一路向北(电影《头文字D》主题曲)铃声 一路向北(电影《头文字...
  • 什么是头文件
  • java手机版头文字d_头文字D THE ARCADE
  • C++头文件一览
  • author-头文字注释
  • 文件内容后面有^M
  • 字符 ^M
  • 阜和SAP FICO模块课程
  • 【Python】判断闰年 + Calendar模块
  • css单个边框样式
  • html-css-边框样式
  • 前端css样式如何设置内边框
  • CSS盒子边框(border)样式综合样式
  • css常用样式(文字样式、边框样式、背景样式)
  • css 样式边框
  • 纯CSS实现的好看的边框
  • CSS 控制边框样式
  • css3中边框的4种样式
  • HTML-用css样式定义div的边框样式
  • CSS之背景样式及边框样式