《thinking in C++》page210
在c++中,宏的概念是作为内联函数(inline function)来实现的,而内联函数无论从那一个方面上说都是真正的函数,编译器会检测内联函数的参数类型,返回值等。唯一不同于普通函数的地方就是在适当的地方像宏一样展开。所以不需要调用开销(参数压栈,生成汇编语言的CALL,返回参数,执行汇编语言的RETURN)。
内联函数的定义:
(1)任何在类中定义的函数,自动成为内联函数
(2)非类的函数加上inline关键字,但是必须是函数体和声明结合在一起,否则编译器将他当做普通函数。例如inline int plusOne(int x);,然后在别的地方定义这个函数。这是没有任何效果的,编译器不会把它当做内联函数
必须inline int plusOne(int x){return ++x;}才行。
(3)一般应该把内联函数放在头文件中,当编译器看到这个定义时,它把函数类型(函数名和返回值)和函数体放到符号表里。
(4)内联函数常用于类的访问函数access function