2010-09-25 121 views

回答

1

内联函数以与函数相同的方式评估它的参数(或者至少您可以这样想)。这可以防止发生典型的宏观错误。另一方面,通过声明函数是内联的,你可以提示编译器避免函数调用,只需将代码中的指令插入代码中(就像宏一样)。

简而言之,它比宏更安全,但仅仅是编译器的一个提示。编译器不会被迫避免函数调用(至少如果我正确地记得它)。

顺便说,例如, “典型的宏错误” 的:

#define SQUARE(a) (a*a) 

int x = 10; 
int square = SQUARE(++x); // this turns out to be 11 * 12, instead of 11 * 11 

内联函数会进行11 * 11来代替。

+1

其实这里的结果是未定义的。 – 2010-09-25 18:34:20