美文网首页
inline知多少

inline知多少

作者: Aska偶阵雨 | 来源:发表于2020-06-18 11:29 被阅读0次

    inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。

    从 inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码文件)内的编译行为,只要超出了这个范围inline属性就没有任何作用了。所以inline关键字不应该出现在函数声明 中,没有任何作用不说,有时还可能造成编译错误(在包含了sys/compiler.h的情况下,声明中出现inline关键字的部分通常无法编译通 过); 

    inline关键字仅仅是建议编译器做内联展开处理,而不是强制。在gcc编译器中,如果编译优化设置为-O0,即使是inline函数也不会被内联展开,除非设置了强制内联(__attribute__((always_inline)))属性。

    总的来说,inline的策略怎么样是故意不披露的,这样至少保留了每个版本策略发生变化的余地。C的inline当然是有用的,但是编译器自己会有一个判断,根据你编译器参数的选择,看看到底这个地方是牺牲空间来inline好,还是牺牲inline来节省空间好。

    程序太大也会导致exe自己保存在内存中的机器码频繁缓存失效降低性能的。如果你是使用VC++的话,你可以使用__forceinline。C++的成员函数默认是有inline的,只要实现写在了类里。

    相关文章

      网友评论

          本文标题:inline知多少

          本文链接:https://www.haomeiwen.com/subject/ojzyxktx.html