https://bbs.csdn.net/topics/392259133
内联函数和宏很类似,而区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。
当然,内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。
内联函数有没有在哪些方面是宏替代不了的?宏函数又有什么优势?
函数是强类型,宏只是单纯的替换操作,没有强类型限制,对于排错有一定的困难,而且展开的代码如果不是输出来会造成逻辑判断的困难程度(相对较复杂的)
宏是预编译的东西,如果你要控制预编译条件,那只能用宏。内联函数是编译时期,所以对预编译的控制是无能为力的