c语言宏和函数的区别