UNUSED( )用法

  1. /*
  2. Avoid "unused parameter" warnings
  3. */
  4. #define UNUSED(x) (void)x;

(void)x 强制类型转换,把x转换成空类型。就如(float)x一样,把数x强制转换成float类型。

任何类型可以转换为void类型,来显示的表明对该值的丢弃,避免未使用时的报错

宏是没有作用域概念的,永远是全局生效。所以,对于一些用来简化代码、起临时作用的宏,最好是用完后尽快用“#undef”取消定义,避免冲突的风险。像下面这样:

  1. #define CUBE(a) (a) * (a) * (a) // 定义一个简单的求立方的宏
  2. cout << CUBE(10) << endl; // 使用宏简化代码
  3. cout << CUBE(15) << endl; // 使用宏简化代码
  4. #undef CUBE // 使用完毕后立即取消定义
另一种做法是宏定义前先检查,如果之前有定义就先 undef,然后再重新定义:
  1. #ifdef AUTH_PWD // 检查是否已经有宏定义
  2. # undef AUTH_PWD // 取消宏定义
  3. #endif // 宏定义检查结束
  4. #define AUTH_PWD "xxx" // 重新宏定义