C语言中的带参宏和带参函数的区别 (1) 带参函数中的形参是变量,因此有类型检查。而带参宏只是简单的字符串替换。 (2) 从程序执行的过程来看,带参宏是在预处理阶段被预处理器处理的。而带参函数是在程序执行的过程中被处理。 (3) 带参宏比带参函数执行快。因为带参函数在被调用时需要保护现场,而在函数返回时需要恢复现场;带参宏仅仅是简单字符串的替换,存在边界问题,因此要尽量给变量加括号。 (4) 带参宏不占用内存,因为带参宏在编译之前已经被替换掉了。而带参函数在程序调用和返回的时候需要进行压栈和出栈操作,需要额外的系统开销。