c语言编程规范 第四部分

news2024/11/15 13:27:59

5、禁止头文件循环依赖头文件循环依赖,指a.h包含b.h,b.h包含c.h,c.h包含a.h之类导致任何一个头文件修改,都导致所有包含了a.h/b.h/c.h的代码全部重新编译一遍。而如果是单向依赖,如a.h包含b.h,b.h包含c.h,而c.h不包含任何头文件,则修改a.h不会导致包含了b.h/c.h的源代码重新编译。

6、  .c/.h文件禁止包含用不到的头文件很多系统中头文件包含关系复杂,开发人员为了省事起见,可能不会去一一钻研,直接包含一切想到的头文件,甚至有些产品干脆发布了一个god.h,其中包含了所有头文件,然后发布给各个项目组使用,这种只图一时省事的做法,导致整个系统的编译时间进一步恶化,并对后来人的维护造成了巨大的麻烦。

7、  头文件应当自包含 简单的说,自包含就是任意一个头文件均可独立编译。如果一个文件包含某个头文件,还要包含另外一个头文件才能工作的话,就会增加交流障碍,给这个头文件的用户增添不必要的负担。示例:如果a.h不是自包含的,需要包含b.h才能编译,会带来的危害:每个使用a.h头文件的.c文件,为了让引入的a.h的内容编译通过,都要包含额外的头文件b.h。额外的头文件b.h必须在a.h之前进行包含,这在包含顺序上产生了依赖。注意:该规则需要与“.c/.h文件禁止包含用不到的头文件”规则一起使用,不能为了让a.h自包含,而在a.h中包含不必要的头文件。a.h要刚刚可以自包含,不能在a.h中多包含任何满足自包含之外的其他头文件

d9be7b42455c464b9bd72eaf53975f6d.png

 今日学习寄语:

1、最累的时候,家人是你最好的归宿。
  2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。
  3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。
  4、程序不是年轻的专利,但是,他属于年轻。
  5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。
  6、一个好汉三个帮,程序员同样如此。
  7、一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。
  8、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。
  9、程序是我的生命,但我相信爱她甚过爱我的生命。
  10、信念和目标,必须永远洋溢在程序员内心。
  11、就算我们站在群山之颠,也别忘记雄鹰依旧能从我们头顶飞过。骄傲是比用Java进行底层开发更可笑的东西。

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

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

相关文章

单例模式设计(面试题)

1、static修饰变量规则static修饰的静态成员属于 类而不是对象,所有的对象共享一份静态成员数据,所以不占用类的空间static修饰的成员,定义类的时候,必须分配空间static修饰的静态成员数据 必须类中定义 类外初始化静态成员变量可…

CentOS7安装MariaDB步骤

文章目录1.配置MariaDB yum源2.安装MariaDBMariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 CentOS 6 或早期的版…

0基础成功转行Python自动化测试工程师,年薪30W+,经验总结都在这(建议收藏)

两年前的决定我觉得还是非常正确的,就是自学了python,然后学习了自动化测试、性能测试、框架、持续集成,同时也把前面的软件测试基础知识全部补全了。目前的收入还比较满意,月入2W(仅代表个人收入),13薪&am…

技术团队管理要求 网文节选要点,内部培训用

业务线开发级别分布 技术开发 高级技术开发 技术专家 p6p7 团队专家 p7 单团队 10人小团队 领域专家 p8 多团队 2-5 10人小团队,技术顶峰,业务和管理能力都不能弱。 商业或者业务leader p8 p9,商业模式设计和商业成功。业务能力和管…

用神经辐射场在大场景中漫游

目录 前言 介绍 背景 改进 NeRF 以编码大型场景 在训练数据中获得足够的观点 动态对象移除 应用 结论 参考 前言 最近一直在做NeRF相关工作,偶然看到台湾智慧实验室一篇文章(Hovering Around a Large Scene with Neural Radiance Field Taiwan …

系列三、docker相关指令

一、docker指令 1.1、查看docker详细信息 docker info 1.2、查看docker版本 docker version 1.3、帮助命令 docker --help 二、images指令 2.1、查看本地仓库中有哪些镜像 docker images 2.2、下载新的镜像 # 语法 docker pull 镜像名:版本号# 案例 docker pull mysql…

详解CanNM配置-CanNmPnEnabled参数有什么用?

总目录链接==>> AutoSAR入门和实战系列总目录 @学前问答: CanNmPnEnabled是什么含义? CanNmPnEnabled会对接收NM PDU 有什么影响 CanNmAllNmMessagesKeepAwake是干嘛的? 文章目录 1 CanNmPnEnable配置解析2 答疑解析1 CanNmPnEnable配置解析 CanNmPnEnable配置的参…

camera 硬件基本知识

参考博客:1.【Camera专题】Qcom-你应该掌握的Camera调试技巧2_c枫_撸码的日子的博客-CSDN博客_outputpixelclock 2.浩瀚之水_csdn的博客_CSDN博客-深度学习,嵌入式Linux相关知识汇总,Caffe框架领域博主 3.一个早起的程序员的博客_CSDN博客-FPGA,PCIe应用实战,PCI-E…

windows 系统 同时安装启动 多个版本的 MySQL

目录一 安装MySQL8.01.0 下载MySQL8.0版本1.1 配置配置文件1.2 注册服务1.3 修改密码二 安装MySQL5.72.0 下载MySQL5.7版本2.1 配置配置文件2.2 注册服务2.3 启动服务并修改密码在同一台 windows 上安装不同版本的MySQL, 这里表示环境干净未安装MySQL的教程.如安装过请先百度搜…

jvm监控进程内存分布

线上经常内存爆满,导致设备掉线,进行排查14894 进程ip Pidjstat -gcutil 14894 1000 -1 jvm 内存分布%jmap -histo:live 14894 | head -50 jvm 存活的实例对象 前50个jmap -histo:live 14894 >> heap.txt jvm 存活的实例对象 输出成文件jmap -dump…

操作系统线程

进程那一章,我们留下了一个问题 第一个cpu调用进程,进程调用i/o设备,主动进入ready 队列 第二个cpu将程序执行时间平均分时,进程执行时间到 第三个fork函数,我们上一章的lab有实践,可以看出是父进程主动条用…

数字化转型下的园区运营如何才能智慧起来?推荐快鲸智慧园区系统

在数字化转型深入推动的背景下,“大数据”、“互联网”等技术不断推动着传统产业,园区运营所产生的业务数据与日俱增。数据作为数字化转型的核心要素,如果不对其进行分析整理,从中提取有价值的信息,数据的价值便无法得…

CS144-Lab1

实验架构 TCP实施中模块和数据流的排列 : [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmRfy6Va-1676857163260)(null)] 字节流是Lab0。TCP的工作是通过不可靠的数据报网络传输两个字节流(每个方向一个),以便写入连接一侧套接字的字…

在superset中快速制作报表或仪表盘

在中小型企业,当下需要快速迭代、快速了解运营效果的业务,急需一款开源、好用、能快速迭代生产的报表系统。 老板很关心,BI工程师很关心,同时系统开发人员也同样关心,一个好的技术选型往往能够帮助公司减少很多成本&a…

软件持续测试的未来题】

测试是软件开发生命周期(SDLC)的重要组成部分。SDLC 的每个阶段都应包含测试,以获得更快的反馈并提高产品质量。如果以有效的方式实施和使用测试自动化,那么它可以为您带来出色的结果,而持续测试是正确的方法.。预计在2018-2023 年的预测期内…

CCNP350-401学习笔记(251-300题)

251、 Which IPv6 OSPF network type is applied to interface Fa0/0 of R2 by default? A. multipointB. broadcast C. Ethernet D. point-to-point 252、Which EIGRP feature allows the use of leak maps? A. neighborB. Stub C. offset-list D. address-family 253、W…

IMS应用领域|IMS连接器系统使自动驾驶成为可能

IMS连接器系统使自动驾驶成为可能极高的创新力和绝对的产品质量:作为高频接插件接口的创新性开发合伙人,我们的产品满足汽车工业对信息娱乐、娱乐、远程信息处理技术、车载电脑和智能汽车天线等不同产品解决方案的多种要求。我们为确保系统的可靠性做出了…

【学习笔记】Docker(一)

Docker为什么会出现?问题:环境配置最初开发上线都需要配置,并且非常麻烦。每一个机器都需要部署环境——费时费力、我在我的电脑上可以运行、版本更新,导致服务不可用传统:开发打包jar包交给运维来做现在:开…

面试经常被问悲观锁和乐观锁?什么是cas?来我花3分钟时间告诉你

锁大家都知道吧,多线程访问资源会存在竞争,那么就需要加锁进而让多个线程一个一个访问。 比如有一个房间,一次只能进一个人,现在有十个人都想进去怎么办? 对,加锁。拿一把钥匙,谁抢到钥匙谁就…

5.4 BGP地址聚合

5.3.1配置BGP地址聚合 1. 实验目的 熟悉BGP地址聚合的应用场景掌握BGP地址聚合的配置方法2. 实验拓扑 实验拓扑如图5-4所示: 图5-4:配置BGP地址聚合 3. 实验步骤 (1)配置IP地址 R1的配置 <Huawe…