第一:对于预处理来说它与类型无关,举例如下,
#include <stdio.h>
#define SIZE(X) sizeof(X)
int main ()
{
int ret;
ret=SIZE(int);
printf("%d",ret);
return 0;
}
像这样函数就做不到,因为函数的参数不可能是类型名;第二,在预处理时的内容是直接替换的不经过任何处理,而在函数传参时是要处理的;第三,它们的速度也不相同,预处理是在函数执行前操作的而函数是调用时才执行;第四,预处理每执行一次时它就会产生一行代码,而函数永远只有一个;第五,预处理可能会产生副作用(I++)
















