《google C++ Style Guide》 1.2 头文件依赖 章节也给出了类似的阐述:若包含了头文件aa.h,则就引入了新的依赖:一旦aa.h被修改,任何直接和间接包含aa.h代码都会被重新编译。如果aa.h又包含了其他头文件如bb.h,那么bb.h的任何改变都将导致所有包含了aa.h的代码被重新编译。在敏捷开发方式下,代码会被频...
1、#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef保证类的头文件在同一个.cpp文件里被多次引用后不会出现重定义问题。 注意:仅仅是防止在同一个.cpp文件里被多次引用。 样例: // file1.hclassfile1{};// file2.h#include"file1....
这样写即使存在.c文件内头文件重复包含也不伤大雅。 语言描述有时太抽象,还是符号举例说明下:假如有两个.c文件分别为A.c和B.c,自然它们都有各自的A.h和B.h文件。 ✍ 原来的思路 A.c里面只有一个#include "A.h",而A.h所包含的就是一大堆如B.h,C.h,D.h…..文件,因为A.c文件里面要用到B.h,...
《google C++ Style Guide》 1.2 头文件依赖 章节也给出了类似的阐述:若包含了头文件aa.h,则就引入了新的依赖:一旦aa.h被修改,任何直接和间接包含aa.h代码都会被重新编译。如果aa.h又包含了其他头文件如bb.h,那么bb.h的任何改变都将导致所有包含了aa.h的代码被重新编译。 在敏捷开发方式下,代码会被频繁构...
规则1:每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口。 说明:如果一个.c文件不需要对外公布任何接口,则其就不应当存在,除非它是程序的入口,如main函数所在的文件。 现有某些产品中,习惯一个.c文件对应两个头文件,一个用于存放对外公开的接口,一个用于存放内部需要用到的定义、声明等,以控制.c文...
规则5:总是编写内部#include保护符( #define 保护)。 说明:多次包含一个头文件可以通过认真的设计来避免。如果不能做到这一点,就需要采取阻止头文件内容被包含多于一次的机制。 通常的手段是为每个文件配置一个宏,当头文件第一次被包含时就定义这个宏,并在头文件被再次包含时使用它以排除文件内容。
♓ 规则1:每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口。 说明:如果一个.c文件不需要对外公布任何接口,则其就不应当存在,除非它是程序的入口,如main函数所在的文件。 现有某些产品中,习惯一个.c文件对应两个头文件,一个用于存放对外公开的接口,一个用于存放内部需要用到的定义、声明等,以控制...
某个头文件不但定义了基本数据类型WORD,还包含了stdio.h syslib.h等等不常用的头文件。 如果工程中有10000个源文件,而其中100个源文件使用了stdio.h的printf,由于上述头文件的职责过于庞大,而WORD又是每一个文件必须包含的,从而导致stdio.h/syslib.h等可能被不必要的展开了9900次,大大增加了工程的编译时间。
ifndef _xxx_h_define _xxx_h_// your code endif
1)保护符使用唯一名称; 2)不要在受保护部分的前后放置代码或者注释。 规则1.6 禁止在头文件中定义变量。 说明:在头文件中定义变量,将会由于头文件被其他.c文件包含而导致变量重复定义。 规则1.7 只能通过包含头文件的方式使用其他.c提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量。