浅谈内联函数和宏的区别(转)

本文探讨了内联函数与宏在C/C++编程中的差异。内联函数能提升程序运行速度,通过编译时直接嵌入代码实现,同时进行参数类型检查;而宏仅在编译前进行字符串替换,不涉及类型检查。内联函数适用于频繁调用的小函数,但会增加代码大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内联函数和宏的区别如下:

    优势:1、内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被内嵌到目标代码中。而宏只是一个简单的替换。2、内联函数要做参数类型检查,这是内联函数跟宏相比的。通过使用关键字inline进行声明。

    劣势:对于短小的代码来说,inline可以带来一定的效率提升,可是这个是以增加code区空间消耗为代价的。inline函数仅仅是一个对编译器的建议,所以最后能否真正内联,看编译器的意思,它如果认为函数不复杂,能在调用点展开,就会真正内联,并不是说声明了内联就会内联,声明内联只是一个建议而已。

inline一般只用于如下情况:

1、一个函数不断被重复调用。

2、函数只有简单的几行,且函数内不包含for,while,swithch语句。

宏不是函数,只是在编译前将程序有关字符串替换成宏体。

inline函数是函数,但是在编译中不单独产生代码,而是将有关代码嵌入到调用处。

inline int iFunc(float i){return i *i;};
cout<<iFunc(2)<<endl;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值