#define Add(a,b) (a+b) //定义个宏
int main()
{
int d = 3;
printf("%d",d * Add(1,2));
return 0;
}
如果定义成#define Add(a,b) (a+b); //定义个宏
编译时出现:
error C2143: syntax error : missing ')' before ';'
error C2059: syntax error : ')'
因为宏是符号完全替换,所以定义成带分号的后,d * Add(1,2)就成了d * Add(1,2); 所以就报错;