参考答案
结论:内联函数是编译期展开的有类型检查的函数,宏是预处理期纯文本替换且无类型安全。区别要点:1.类型安全:内联函数参数有类型,编译器校验;宏仅文本替换,易因优先级出错(如#define SQUARE(x) x*x,SQUARE(1+2)展开为1+2*1+2=5);2.调试与符号:内联函数可调试、有作用域和重载;宏无调试信息且全局生效;3.展开控制:内联由编译器决定是否真正展开,宏强制替换;4.副作用:宏参数若含自增等副作用会多次计算。示例:inline int square(int x){return x*x;} 调用square(1+2)正确得9。