Google C++编程规范学习--头文件

本文介绍了遵循Google C++编程规范时如何处理头文件,包括使用#define防止多次包含,尽量使用前向声明减少编译依赖,正确使用内联函数,以及规范函数参数顺序和头文件包含的策略。强调了减少隐藏依赖和提高代码可读性的重要性。
摘要由CSDN通过智能技术生成

     1、使用#define防止多次包含(multiple inclusion),宏命令规则:project_path_file_H_,如项目test中include目录下一个文件foo.h,宏定义为:#define TEST_INCLUDE_FOO_H_;


2、尽量使用前向声明代替头文件包含。原因:

A文件包含:

B.h

C.h

B或C头文件发生变化时,编译时A文件及依赖A.h的所有文件都要重新编译。

头文件中可以使用前向声明代替头文件包含情况有:

1)、指针或引用变量;

2)、参数、返回值类型的函数(只能是声明,不能包含实现,实现放到cpp文件中情况);

3)、静态数据成员的声明。

如:

#ifndef GOOGLEFORMATCODE_FORWARDDECLARATION_H_
#define GOOGLEFORMATCODE_FORWARDDECLARATION_H_

class CTestA;

class CForwardDeclaration
{
public:
	CForwardDeclaration();
	~CForwardDeclaration() {}

public:
	void SetTestA(const CTestA& testA);
	CTestA GetTestA();
	void SetTestATwo(CTestA testA);

private:
	CTestA*				m_pTestA;
	CTestA&				m_TestA;
	static CTestA			s_TestA;
};

#endif




3、内联函数的使用,一般有以下规则:

1)、代码行数小于10行的;

2)、不能包含有循环、条件语句;

3)、virtual、递归函数不能是内联函数;

4)、内联函数比较复杂时,实现可以放到以-inl.h结尾的文件中(注意,这个文件也需要#define保护,防止多次包含)。

内联函数和普通函数一个比较大区别:代码调用内联函数会类似调用宏定义,会把代码在调用的地方展开;而普通函数会做一些记录,然后跑到函数中执行,执行结束后再返回,继续执行剩下的语句。


4、函数参数,一般输入参数在前,输出参数在后(有些参数可能再者皆有,所以,这个参数顺序规则不强制要求)。


5、包含文件的名称和次序:将包含次序标准化可增强可读性、避免隐藏依赖。

包含的名称避免使用.(当前目录)和..(父目录)这种UNIX文件路径。

包含序:C库、C++库、其他库的.h、项目内的.h。

例如:
A.h

struct BS bs;
...

B.h

struct BS{
....
};

在A.c中

//这样会报错
#include A.h  
#include B.h

//先包含B.h就可以
#include B.h
#include A.h


一般解决要么在.h文件中包含B.h文件或是在.h中使用前向声明(如果可以,更推荐使用前向声明)。

这样就叫"隐藏依赖"

参考:http://www.cnblogs.com/HappyYouxi/archive/2014/04/15/3666476.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值