不是这样的,宏替换是在预编译时将整个宏的
表达式进行替换再进行编译的,举个例子讲如果你定义了如下宏:
#define fun(a) (a*a)
下面用的时候
int main()
{
int i = 5, j = 4;
int k = fun(i+j)
}
那么在预编译时首选会先将fun(i+j)替换成 i+j*i+j,即此时计算的时候会先算乘法i*j,那么k的值最终就是5+4*5+4 = 29,而不是(i+j)*(i+j)=81,当然如果你想实现后一种结果,则
宏定义方法应该是下面这样的
#define fun(a) ((a)*(a))
相互学习,希望对你有帮助,不懂的话,再跟我讨论吧
追问明白了,谢谢啊!!!真是高手啊
追答呵呵,相互学习