本文来自:智趣网-C/C++语言编程技术交流论坛http://www.bczh.net
 

使用宏定义
 
  在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。
 
  写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个:
 
  错误做法:
 
  #define MIN(A,B)  ( A <= B ? A : B )
 
 

 正确做法:
 
  #define MIN(A,B) ((A)<= (B) ? (A) : (B) )
 
  对于宏,我们需要知道三点:
 
  (1)宏定义"像"函数;
 
  (2)宏定义不是函数,因而需要括上所有"参数";
 
  (3)宏定义可能产生副作用。
 
  下面的代码:
 
  least = MIN(*p++, b);
 
  将被替换为:
 
  ( (*p++) <= (b) ?(*p++):(b) )
 
  发生的事情无法预料。
 
  因而不要给宏定义传入有副作用的"参数".