为什么inline函数应该在头文件中定义?
2017-03-15 21:56
489 查看
inline函数(即内联函数)对编译器而言必须是可见的,以便能够在调用点展开该函数,与非inline函数不同的是,inline函数必须在调用该函数的每个文件中定义。当然,对于同一程序的不同文件,如果inline函数出现的话,其定义必须相同。
正因为如此,建议把inline函数的定义放到头文件中,在每个调用该inline函数的文件中包含该头文件。这种方法保证了每个inline函数只有一个定义,且程序员无需复制代码,并且不可能在程序的生命周期中引起无意的不匹配的事情。
——摘自《C++ Primer》(第三版)
备注:
1)如果在头文件中定义非inline函数,一旦该头文件被多个文件包含,就会造成该非inline函数的“重定义”,因而,不建议将非inline函数的定义放在头文件中,但是非inline函数的声明是可以放在头文件中的。
2)inline函数可以省去函数调用的开销,从而提高函数的执行效率,但是如果函数体内代码的执行时间相比于函数调用时间长的多的话,inline函数也就没有什么优势了。
正因为如此,建议把inline函数的定义放到头文件中,在每个调用该inline函数的文件中包含该头文件。这种方法保证了每个inline函数只有一个定义,且程序员无需复制代码,并且不可能在程序的生命周期中引起无意的不匹配的事情。
——摘自《C++ Primer》(第三版)
备注:
1)如果在头文件中定义非inline函数,一旦该头文件被多个文件包含,就会造成该非inline函数的“重定义”,因而,不建议将非inline函数的定义放在头文件中,但是非inline函数的声明是可以放在头文件中的。
2)inline函数可以省去函数调用的开销,从而提高函数的执行效率,但是如果函数体内代码的执行时间相比于函数调用时间长的多的话,inline函数也就没有什么优势了。
相关文章推荐
- C++中inline函数的定义为什么要放在头文件中?头文件中“只定义一份”是什么意思?const object 和inline函数是“一次定义规则”
- C++:为什么inline函数的定义要放在头文件里 + inline和宏定义的区别(暂未体会到)
- inline函数必须在头文件中定义吗?
- 为什么C语言的同一个文件中可以定义两个接口完全相同的函数?
- 模板类成员函数的定义和声明为什么要放在一个文件中
- 将 inline 函数定义在头文件中
- 为什么在一个类中定义的函数默认是inline的
- inline函数必须在头文件中定义吗?
- inline函数必须在头文件中定义吗?
- 为什么头文件中不要写函数定义
- inline函数的定义放在头文件中
- inline函数必须在头文件中定义吗?
- inline函数定义放在头文件中的作用
- inline函数必须在头文件中定义吗?
- c++模板类/模板函数的声明与定义应该放在头文件里,不要分开来写类中函数的声明与定义
- 头文件里面实现一个函数,在两个cpp中包含,则重复定义,如果加上inline则不会报错
- 模板类成员函数的定义和声明为什么要放在一个文件中
- 模板类成员函数的定义和声明为什么要放在一个文件中
- 为什么不要在头文件中写上函数定义?
- 为什么虚函数不应该是内联(inline)函数?