1)函数调用是在程序运行时处理的,在栈中分配内存单元。而宏代换则是在编译前进行的,在代换时并不分配内存单元,不进行值的传递,也没有“返回值”的概念。
2)函数调用时,先求出实参表达式的值,然后赋值给形参。而使用带参的宏只是进行简单的字符代换。
3)对函数中的形参和实参都要定义类型。而宏不存在类型问题。
4)宏代换不占用运行时间,只占用编译时间;而函数调用则占用运行时间(分配单元,保留现场,参数传递,值返回等)
1)函数调用是在程序运行时处理的,在栈中分配内存单元。而宏代换则是在编译前进行的,在代换时并不分配内存单元,不进行值的传递,也没有“返回值”的概念。
2)函数调用时,先求出实参表达式的值,然后赋值给形参。而使用带参的宏只是进行简单的字符代换。
3)对函数中的形参和实参都要定义类型。而宏不存在类型问题。
4)宏代换不占用运行时间,只占用编译时间;而函数调用则占用运行时间(分配单元,保留现场,参数传递,值返回等)