inline 是为补足宏定义缺乏类型检查的安全缺陷而提出来的,但 inline 仍有着另外的丰富的应用。
inline 是一类特殊的函数,宏不是函数
inline 是有类型检查的“宏”
inline 没有标准函数的运行时内存架构(建栈清栈)
一个在类内部完成定义的成员函数,而非简单的声明,视为 inline 函数处理
inline unsigned long add(unsigned long a, unsigned long b)
{ return a+b; }
for (unsigned long i = 0; i < 10000000; ++i)
{
a = add(a, i);
// 如果此时的 add () 是一个标准函数
// 将会在巨大的循环内部不停地建栈和清栈
// 但若声明为 inline,
// 含义相等于宏,原样替换
// 但编译器对一个标准函数而非宏的语法、语义检查也都在
}