一、宏应用
虽然作为一名C++程序员可能宏的应该被限制的太多。但在某些情况下宏还是能起到非常大的作用的。特别是在和一些硬件或底层打交道时,宏的应用也是经常需要的。所以对一些基础的宏的使用经验和技巧还是要掌握的。
二、常见的宏技巧
经常遇到的宏的技巧有以下几种情况:
1、限制性展开
基本上程序员都知道宏的替换展开,如果一不小心就会因为运算符的优先级或者括号处理等原因导致展开后的计算表达式并非自己需要的,结果也可想而知,一定是不正确的。那么如何正确的展开一个宏,其实就是要利用好括号以及do…while。是的,没有错,一个循环。
括号做为限制性展开的一个手段,一般只能在比较简单的情况下比较好控制,这个就不举例了。但在复杂时,一不小心可能就仍然无法达到想要的效果,所以一般是使用do…while(0),看一个简单的例子:
#define myfunc(a, b) do {
\
init(a,b); \
exec(a,b); \
} while (0)
//use
if