内联函数和宏的区别如下:
优势: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;