宏定义好处:
(1)少些代码,可以将复杂的宏重定义为简单的。
(2)方便修改,定义一个变量,可以只修改变量,就可达到修改多出
但是对于复杂的宏,可能产生问题
例如定义一个宏函数,宏函数的好处就是减少函数调用入栈和出栈的开销,提高了效率,
下面是一个求平方的宏函数
#define square(x) x*x
我们验证一下:
cout<<square(3)<<endl;
好像没问题耶,
这样定义肯定有问题,那么对于cout<<square(2+3)<<endl;,就出问题了,于是我们该了下
#define square(x) (x)*(x)
我们验证一下:
cout<<square(2+3)<<endl;
好像没问题耶,
这样就可以了吗?
这样定义肯定有问题,那么对于cout<<25/square(2+3)<<endl;怎么不是我们期望的结果:1呀,就出问题了,于是我们该了下
#define square(x) ( (x)*(x))
我们验证一下:
cout<<square(2+3)<<endl;
ok了。
所以对于宏函数,参数的括号是不能少的。
本文探讨了宏定义在代码简化及修改方面的优势,并通过实例详细分析了宏函数在使用过程中可能遇到的问题及其解决办法。
3823

被折叠的 条评论
为什么被折叠?



