高质量的C/C++编程系列(1)

x33g5p2x  于2021-11-19 转载在 C/C++  
字(1.5k)|赞(0)|评价(0)|浏览(273)

前言

第一章  文件结构

1.1   头文件的结构

1.2  头文件的作用

1.3  目录结构

前言

首先声明,文章内容并非原创,而是从林锐博士所著的《高质量的C/C++编程》书籍摘要总结并加上了一部分我自己的理解而来,从中截取了一些我们在C语言中常用到的一些规则,一些内容我们在初始阶段用不到,所以对其进行了删减,主要是为了减轻大家的阅读负担,这个系列就是为了帮助大家写出规范、美观的代码,下面正文内容即将开始!

第一章  文件结构

1.1   头文件的结构

头文件由三部分内容组成:

(1)头文件开头处的版权和版本声明。

(2)预处理块。

(3)函数和类结构声明等

规则1.1.1:为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预 处理块。

规则1.1.2:用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

规则1.1.3:用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

总结:这三个规则实际上都是为了提高代码的运行效率,更好的节省时间,比如在规则1.1.1中,虽然头文件可以重复引用,但每次加载文件模块都会加载一次引用的文件,无疑会大大增加代码运行所花费的时间,规则1.1.2和规则1.1.3中,用<>和”“来进行区分,一方面程序员可以更好的区分头文件是自己的还是标准库的,另一方面也有助于提高代码的效率。

建议1.1.4:头文件中只存放“声明”而不存放“定义”。

在 C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。 这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定 义与声明分开,不论该函数体有多么小。

建议1.1.5:不提倡使用全局变量,尽量不要在头文件中出现象 extern int value 这 类声明。

至于原因就是全局变量生命周期过长,且容易被改变,一旦改变,代码有可能在后续的运行中出现错误,代码安全性下降。并且局部变量虽然与局部变量同名时遵循局部优先原则,但还是会使程序员容易发生混淆,进而造成不可避免的错误。

C/C++头文件的结构

#ifndef GRAPHICS_H // 防止 graphics.h 被重复引用 
#define GRAPHICS_H 
 
#include <math.h> // 引用标准库的头文件 
…
#include “myheader.h” // 引用非标准库的头文件 
… 
void Function1(…); // 全局函数声明 
… 
class Box // 类结构声明 
{ 
… 
}; 
#endif

1.2  头文件的作用

(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库 功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。简答来说,就是程序员做出了一个程序,想要卖钱,但是呢,不想让买家看到里面具体的代码实现,这样呢,一个程序可以卖给多家公司,所以要运用头文件。

(2)头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件 中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错 的负担。

1.3  目录结构

如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分 别保存于不同的目录,以便于维护。 例如可将头文件保存于 include 目录,将定义文件保存于 source 目录(可以是多级 目录)。

如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。

好了,今天的分享到此结束,如果大家觉得有所帮助的话,点个赞和关注吧,记得收藏哦,持续更新中!

相关文章

微信公众号

最新文章

更多