内联函数在编译时期展开,而宏是在预处理时期展开在编译的时候,内联函数可以直接被镶嵌到目标代码中,而宏只是一个简单的文本替换内联函数可以完成诸如类型检测,语句是否正确等编译功能,而宏没有这样的功能。宏不是函数,而内联函数是函数宏在定义的时候要小心的处理宏参数,一般情况下要把参数用括号括起来,否则容易出现一些二义性,而内联函数定义不会出现二义性。