第1个回答 2013-10-21
如果宏与调用函数重名了的话,这种情况编译无法通过。
你始终记住宏实际上就是在编译的时候进行替换,不管宏与函数是否同时存在,反正你把宏定义的那个名字在所有出现的地方替换进去看看是否是正确的就知道了。
比如你定义
#define max(a, b) ((a) > (b) ? (a): (b))
再来
int max(int a, int b)
{
return a < b ? a : b;
}
那么就是
int ((int a) > (int b) ? (int a): (int b)){
return a < b ? a : b;
}
自己很容易判断这个肯定编译不过了。