C++在头文件中编写实现代码的坏处
来源:互联网 发布:岗位消防安全四知四会 编辑:程序博客网 时间:2024/05/22 00:12
http://www.dewen.io/q/5951
1 在头文件中编写代码会导致同样的二进制被多个模块反复编译内联,导致程序体积上升
2 头文件中的代码会被很多的cpp文件引用,导致重复编译,导致编译速度下降
3 由于代码被多次编译,在链接时链接器无法正确的理解这些函数的实体导致链接不通过。(除非指定了inline或static,同样不可取,见后续说明)
4 即使强制指定了inline,链接器也无法判定同名函数实体是否具有相同的功能,导致链接器只能任意撇弃实例,这可能导致inline隐藏了代码问题。
5 如果头文件中的函数代码中存在static变量,当这个函数被多个模块链接时,将产生多份static变量实例,从而导致晦涩的程序问题。
C里面一般是不允许把代码直接写在.h文件中的,但是在C++中则完全不一样:
1. 简单的代码鼓励写成inline并放在.h文件中,这样编译器可以将代码直接嵌入调用的部分、进行深层次优化并且减少调用开支。当编译器认为不适合inline时也可以自动处理。类中将实现直接写在类声明中的自动成为inline函数。
2. 模板类必须把代码写在.h中间,因为是到用时才编译的。
事实上现在的C++编译器完全可以自动处理类实现写入.h文件的情况,即使实现的成员函数前面是virtual之类不能inline的类型也不会有问题。最多只是降低编译速度而已。
综合来说最好的选择是复杂的代码写入.cpp,简单的、可以inline的代码写入.h实现成inline。
写入.h文件要考虑的另一个问题是如果你要将程序作为库发布出去,代码写在.h中会泄露你的代码,并可能影响将来的兼容性。
0 0
- C++在头文件中编写实现代码的坏处
- 编写安全代码:不要在头文件中定义变量
- 编写安全代码:不要在头文件中定义变量
- C++头文件里编写实现代码
- Unity中CS文件类头注释的编写实现
- 写文件头的算法流程及C代码实现
- 编写自己的C语言头文件
- 编写自己的C语言头文件
- 编写自己的C语言头文件
- C语言头文件的编写
- c++头文件的编写
- 关于c语言头文件的编写
- C++ 中编写自己的头文件
- 在C语言中头文件的作用
- 【C++】在头文件中定义全局变量的技巧
- C/C++中调用外部文件的函数时如何编写头文件
- 在类的头文件中尽量少引入其他头文件 <<Effective Objective-C>>
- 关于在头文件中实现函数的情况
- 2015 ACM/ICPC合肥网赛&HDU5491 The Next
- 常用正则表达式
- 学习一个月web开发的成果,服务器C++,数据库postgresql简易的知识分享平台
- Github干货系列:Python 免费资源集合
- ShaderLab: Stencil
- C++在头文件中编写实现代码的坏处
- 链表头插法编程实现
- Scrum: 敏捷开发的具体方式
- Java基础面试十道题(一)
- noip2011 计算系数 (幂方取模+组合数取模)
- 解决git detached 状态 恢复分支名字的显示
- 选择排序法的实例分析
- 【Visual C++ 2010】Win32程序中一些常用的字母所代表的含义
- java的内部类(一)