1.宏定义在编译前完成替换,相当于直接插入代码,替换之后的代码参与编译,运行时不存在函数调用,运行就更快。函数调用就需要跳转到具体的函数,速度就更慢。
2.宏定义直接插入代码,没有返回值。函数有返回值。
3.宏定义没有参数类型检测,函数有参数类型检测。
4.宏定义后不加分号。
------------------------------------------------------
1.宏主要用于定义常量及书写复杂的内容;typedef主要用于定义类型别名。
2.宏替换发生在编译阶段之前,属于文本插入替换;typedef是编译的一部分。
3.宏不检查类型;typedef会检查数据类型。
4.宏不是语句,不在最后加分号;typedef是语句,要加分号标识结束。