宏:
1.宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,可以理解为文本替换。
2.宏进行定义时不会考虑参数的类型。
3.参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作,只是进行了替换。
函数:
1.函数只在目标文件中存在一处,一次声明就可任意调用,比较节省程序空间。
2.函数的调用会牵扯到参数的传递,压栈/出栈操作,速度相对较慢。
3.函数的参数存在传值和传地址(指针)的问题,参数宏不存在。
宏:
1.宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,可以理解为文本替换。
2.宏进行定义时不会考虑参数的类型。
3.参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作,只是进行了替换。
函数:
1.函数只在目标文件中存在一处,一次声明就可任意调用,比较节省程序空间。
2.函数的调用会牵扯到参数的传递,压栈/出栈操作,速度相对较慢。
3.函数的参数存在传值和传地址(指针)的问题,参数宏不存在。