C++编程规范之23:头文件应该自给自足

摘要:

    各司其责:应该确保所编写的每个头文件都能够独自进行编译,为此需要包含其内容所依赖的所有头文件。

如果一个文件包含某个头文件时,还要包含另一个头文件才能工作,就会增加交流障碍,给头文件的用户增添不必要的负担。

    现在的C++编译器基本上都能够自动识别头文件保护符,甚至不会两次打开同一个头文件。有些编译器还提供了预编译的头文件,有助于确保不会经常分析那些常用而且很少变化的头文件。

    但是要记住一点,不要包含并不需要的头文件,它们只会带来凌乱的依赖性。在编写程序时,构建时,应独立编译每个头文件,并确认没有产生错误或者警告,用这种方法来确保每个头文件都是自给自足的。

时间: 2024-12-03 16:43:57

C++编程规范之23:头文件应该自给自足的相关文章

C语言编程入门之程序头文件的简要解析_C 语言

头文件是扩展名为.h的文件,其中包含C函数的声明和宏定义,也可以多个源文件之间共享.有两种类型的头文件:程序员编写的文件,和编译器中附带的文件. 要求使用头文件的程序,包括通过它,使用C语言预处理指令#include就像所看到的包含stdio.h头文件,它随着编译器自带. 包括一个头文件等于复制头文件的内容,但我们不这样做,因为这很容易出错,一个好主意是我们不复制头文件的内容,特别是包括多个程序的源文件. 在C或C++程序的简单做法是,我们把所有的常量,宏全系统全局变量和函数原型在头文件,其中包

c c++编程-调用cups问题,如何调用cups头文件

问题描述 调用cups问题,如何调用cups头文件 想使用cups的API函数进行编程,但是找不到 #include #include #include #include 等头的库文件.求在c/c++.QT中如何加入这些头文件.

UNIX网络编程之旅-配置unp.h头文件环境

最近在学习Unix网络编程(UNP),书中steven在处理网络编程时只用了一个#include "unp.h"  相当有个性并且也很便捷 于是我把第三版的源代码编译实现了这个过程,算是一种个性化的开发环境的搭建吧,顺便把过程记录下来,以便自己以后查阅.   首先去网上找到源代码包unpv.13e.tar.gz 一找一大堆 解压缩到你的某个目录,unpv13e里面大致有这些目录 ├── aclocal.m4 ├── advio ├── bcast ├── config.guess ├─

windowssocket编程-请问ICMP_ECHO是系统预定义的吗,包含在哪个头文件里呢?

问题描述 请问ICMP_ECHO是系统预定义的吗,包含在哪个头文件里呢? 在编写一个ping程序时,填充ICMP包的内容,要将类型设置为ICMP响应包,即icmp_hdr->i_type =ICMP_ECHO; 但是IDE提示未定义的标识符ICMP_ECHO未定义,这是怎么回事呢 解决方案 知道了,,,,翻到了另一个人的代码,原来要自己定义, #define ICMP_ECHO 8 解决方案二: 自挽,,,,此贴终结

单片机编程 keil-关于keil中头文件无法打开

问题描述 关于keil中头文件无法打开 最近在搞keil相关的东西,先遇到一问题,想向各位大神们请教! 我在Keil uVision4中新建了一个工程,添加了一个.c文件,其中包含#include,但是问题出现了说不能打开. 请问是什么问题?

Unix环境编程常用头文件

POSIX标准定义的头文件<dirent.h> 目录项 <fcntl.h> 文件控制 <fnmatch.h> 文件名匹配类型 <glob.h> 路径名模式匹配类型 <grp.h> 组文件 <netdb.h> 网络数据库操作 <pwd.h> 口令文件 <regex.h> 正则表达式 <tar.h> TAR归档值 <termios.h> 终端I/O <unistd.h> 符号常量

linux编程-怎么让自己写的头文件在一个.c文件中其作用?

问题描述 怎么让自己写的头文件在一个.c文件中其作用? count.h 1 #ifndef COUNT_H 2 #define COUNT_H 3 int count(int x); 4 #endifcount.c 1 #include 2 int count(int x) 3 {return 2*x; } num.c 1 #include""stdio.h"" 2 #include""count.h"" 3 int main

indows编程 句柄-关于winnt.h头文件中有关句柄(HANDLE)的一段源代码的两个疑问,求大神解答。

问题描述 关于winnt.h头文件中有关句柄(HANDLE)的一段源代码的两个疑问,求大神解答. 大家好!我对winnt.h中的这段代码有疑问: #ifdef STRICT typedef void *HANDLE; #if 0 && (_MSC_VER > 1000) #define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name #else #define DECLARE_HANDLE(nam

c++模板编程问题-怎样用DEV~C++在.cpp文件中插入一个.c文件,用在.cpp的头文件中去

问题描述 怎样用DEV~C++在.cpp文件中插入一个.c文件,用在.cpp的头文件中去 .cpp文件: #include #include using namespace std; int main() { template m; m.CreateList(10); for(int i = 0; i < length; i++) cout << elem[i] << " "; cout << endl; m.Insert(2, 7); for