inline和static、宏的区别及内联的注意事项

在说inline函数和static函数的区别前,先说说 static函数和普通函数的区别。

static函数和普通函数的区别:函数符号不同。

普通函数是global符号,static函数生成的是local 符号。除此区别外,二者并无差别,都有开栈、清栈过程。

 

一、inline函数和static函数的区别:

区别1、inline函数无开栈、清栈开销,而static函数有;

区别2、inline函数是在编译阶段代码展开导致函数只在本文件可见,而static 符号的属性是local,在本文件可见;

 

二、inline 和宏的区别

区别:inline函数在编译时期处理,有语法、语义、词法分析,即有类型检查和安全检查,

          而宏是在与编译时期处理,只进行值替换,没有类型检查和安全检查,所以不安全;

 

三、内联的注意事项

1、内联函数只在realse 版本中生效;

2、将内联函数写在头文件中;

3、inline 只是给编译器一个建议,而最终会不会被处理为内联函数由编译器决定;

4、inline 加在声明函数前是无效的,因为inline是基于实现的关键字,而不是基于声明的;

 

四、内联的缺点及建议

缺点:以代码膨胀为代价,是一个典型的以空间换时间的思想。

建议:若开栈的开销  >  执行的开销,则设置为inline函数,这样可以提高效率;反之,不建议使用inline;

           若开栈的开销远小于执行的开销,则一定不要设置为内联函数。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值