博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Inline 函数
阅读量:7042 次
发布时间:2019-06-28

本文共 1003 字,大约阅读时间需要 3 分钟。

  hot3.png

最近看代码常常把代码编译好看汇编结果,所以有机会更近的接触下inline。

Inline的好处,effective c++讲了一堆,当然是能用则用了。

这里就说下一些细节的东西。

inline是编译时刻嵌入的,在gcc的preprocess结果来看,inline并没有展开,在编译 时刻inline做了展开,在优化模式下,inline就像直接写入的代码一样,执行顺序会被编译器优化和上下文的代码参杂起来。

所以既然没有调用linker,那么如果inline函数的实现在编译时刻不可见就没法做到,在vc2005和gcc中都遇到undefined reference/symbol 的错误。

所以只要在同一个编译单元就可以。可以放在.h文件中,如果inline函数只在一个.cpp中使用,那么放在同一个.cpp中也是可以的,反正一个编译单元可见就行。

class
 InlineTest
...
{
    inline 
void Test()
    
...{
         
//this will inline, but too ugly
    }
}
;

 

class
 InlineTest
...
{
    inline 
void Test();
}
void
 InlineTest::Test() 
...
{
    
//this is better, but one change will bring too much compilation
}

 

 

InlineTest.h:
class
 InlineTest
...
{
    inline 
void Test();
}
;
//
---------------------------------------------------------------------------------------------------------------------------------------
InlineTest.cpp:
void
 InlineTest::Test()
...
{
    
//this is pretty good, but have restriction, the function must be used in InlineTest.cpp, no where else.
}
原文链接:

转载于:https://my.oschina.net/dtec/blog/44641

你可能感兴趣的文章
PHP发送返回404状态码
查看>>
第7章 类和对象 类
查看>>
【转】Android HAL实例解析
查看>>
javabean总结
查看>>
QTableWidget的表头颜色设置
查看>>
Java将视频转为缩略图--ffmpeg
查看>>
单位有b\B\K\M\G的相互转换
查看>>
前端引擎初步设计稿 -通过配置生成动态页面 ,LandaSugar平台 .NET-C#-MVC
查看>>
scanf的一些技巧
查看>>
MongoDB初学
查看>>
O365(世纪互联)SharePoint 之站点个性化
查看>>
你应该知道的基础 Git 命令
查看>>
php 链接access数据库
查看>>
Java单例模式--------懒汉式和饿汉式
查看>>
给iOS工程增加Daily Build
查看>>
关于session的小结
查看>>
http://blog.csdn.net/hitmediaman/article/details/6636402
查看>>
JAVA中使用freemark生成自定义文件(json、excel、yaml、txt)
查看>>
解决java.lang.IncompatibleClassChangeError: Implementing class
查看>>
Spring MVC报异常:org.springframework.web.util.NestedServletException: Request processing failed
查看>>