一个宏定义的问题


#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); 所以就报错;

你可能感兴趣的:(c)