inline!C++内联
Posted zero9988
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了inline!C++内联相关的知识,希望对你有一定的参考价值。
在android5.0的源代码中
经常可以看到xxxxx-inl.h的文件(C++中好像还有专门的.inl文件) 这些文件都是内联函数/模板的文件 比如Class-inl.h Class_linker-inl.h Dex_file-inl.h Art_method-inh.h(里面尽是一些
template<VerifyObjectFlags kVerifyFlags>
inline void ArtMethod::SetNativeMethod(const void* native_method) 这样子的函数。。。。
)
我们发现第一个问题,申明内联函数/模板的文件都是.h结尾
什么是内联函数:(百度百科)
联函数是指用inline关键字修饰的函数。
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。
一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。
内联函数与宏定义的区别:
1.内联函数在运行时可调试,而宏定义不可以;
2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;
3.内联函数可以访问类的成员变量,宏定义则不能;
4.在类中声明同时定义的成员函数,自动转化为内联函数。
Ps,编译器好像会自动选择一些函数进行内联的优化的O O 并非申明了就一定内联,也不是不申明就不内联O O
好像内联和宏 都是主要为了解决重复定义的问题??
以上是关于inline!C++内联的主要内容,如果未能解决你的问题,请参考以下文章