头文件的包含以及命名空间的引入尽量写在cpp里
2017-03-03 19:03
295 查看
原文:http://blog.csdn.net/u012234115/article/details/40019945
1,头文件尽量包含在cpp文件里,而不是h文件里
放在.cpp文件中是比较安全的,文件在多次递归包含后很容易出现一些定义和声明上的问题。
放在cpp中可以减小头文件依赖,可以提高编译速度。所以,能放在cpp中的,就不要放在h中。
只有头文件必须用到的放到头文件,头文件中可以使用前置声明来代替。或者所有cpp都用到的也可以放到头文件。
哪里用到就放哪里,谁用谁包含。
一般是默认放在cpp里,之后如果出现.h也用了,再把cpp中的删了。
2,不要在头文件中使用using namespace
经常在头文件中使用namespace。但这样的结果就是,这个头文件会被其他的文件所包含,那么这样那个文件也用了namespace所指定的命名空间,这并不是我们所期望的,可能导致冲突。所以不要在头文件里面使用namespace,特别是接口头文件。
比如说:
在A.h中
using namespace std;
在B.h中,
我们自己定义了一个类vector,
class vector
本想这个类是纯粹我们自己定义的,不是std的那个。
可是在B.cpp中,
我们
#include "B.h"
#include "A.h"
vector a;
在编译到此的时候,编译器就会报错,不知道这个vector到底是std的那个,还是我们自己定义的那个。
所以我们最好不要在头文件中使用using namespace XXX;我们可以在头文件中直接使用全名称。在cpp中可以放心地使用它。
1,头文件尽量包含在cpp文件里,而不是h文件里
放在.cpp文件中是比较安全的,文件在多次递归包含后很容易出现一些定义和声明上的问题。
放在cpp中可以减小头文件依赖,可以提高编译速度。所以,能放在cpp中的,就不要放在h中。
只有头文件必须用到的放到头文件,头文件中可以使用前置声明来代替。或者所有cpp都用到的也可以放到头文件。
哪里用到就放哪里,谁用谁包含。
一般是默认放在cpp里,之后如果出现.h也用了,再把cpp中的删了。
2,不要在头文件中使用using namespace
经常在头文件中使用namespace。但这样的结果就是,这个头文件会被其他的文件所包含,那么这样那个文件也用了namespace所指定的命名空间,这并不是我们所期望的,可能导致冲突。所以不要在头文件里面使用namespace,特别是接口头文件。
比如说:
在A.h中
using namespace std;
在B.h中,
我们自己定义了一个类vector,
class vector
本想这个类是纯粹我们自己定义的,不是std的那个。
可是在B.cpp中,
我们
#include "B.h"
#include "A.h"
vector a;
在编译到此的时候,编译器就会报错,不知道这个vector到底是std的那个,还是我们自己定义的那个。
所以我们最好不要在头文件中使用using namespace XXX;我们可以在头文件中直接使用全名称。在cpp中可以放心地使用它。
相关文章推荐
- 头文件的包含以及命名空间的引入尽量写在cpp里
- 头文件的包含以及命名空间的引入尽量写在cpp里
- 头文件的包含以及命名空间的引入尽量写在cpp文件中
- Spring配置文件之引入命名空间
- 【C/C++学院】0813-C与CPP不同以及命名空间简介/函数重载与函数默认参数/泛型auto/Newdelete
- PHP 命名空间以及自动加载(自动调用的函数,来include文件)
- 命名空间文件引入问题
- 包含cpp文件链接opencv源码编译以及neon加速的Android.mk
- php加了命名空间没引入初始化文件:类的命名空间要与文件夹名一致namespace Business\Event;缺少了Event
- 关于包含头文件而编译时却一个未定义错误的原因(未使用命名名字空间)
- php namescpace 命名空间use引入文件
- 关于.cpp文件包含另一个.cpp文件出错的原因以及解决办法
- js文件存放位置以及命名空间
- JavaScript 编程引入命名空间的方法
- Oracle - Oracle系统紧急故障处理(数据文件、日志文件以及表空间损坏的处理)
- JavaScript 编程引入命名空间的方法与代码
- petShop 4.0 的命名空间 以及各个项目模块的说明
- >>CLI里面的秘密……(二)强命名、元数据以及文件结构(下半部分)
- PetShop 的命名空间 以及各个项目模块的说明
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)