预处理,主要用于选择编译 (编译的时候不要某些代码,可以用预处理删掉)

  1. #if 常量表达式
  2. //***
  3. #endif
  4. #if 常量表达式1
  5. //***
  6. #else 常量表达式2
  7. //***
  8. #endif
  9. #if 常量表达式1
  10. //***
  11. #elif 常量表达式2
  12. //***
  13. #elif 常量表达式3
  14. //***
  15. #endif
  16. //宏、算术运算、逻辑运算 都是常量表达式(结果是布尔值即可)
  17. //#if、#elif只能用于对象宏、不能用于函数宏(带参数的宏)
  18. //================================================
  19. //复合条件
  20. //复合条件运算符,&&,||
  21. #if 常量表达式1 复合条件运算符 define 常量表达式2

宏定义、宏判断

defined 用于#if #elif 中的宏判读,可以直接返回ture或false(是一种运算式
#define 宏定义
#ifdef 宏判断(判断存在)
#ifndef 宏判断(判断不存在)
#endif 所有判断体的结束标志

未定义的宏,值为0(false) 已定义的宏,值为1(ture)

  1. //定义对象宏
  2. #define 宏名
  1. //定义带参宏
  2. #define 宏名 字符串
  3. //字符串可以是,表达式,关键字等任何想代替的形式

宏的判断,请用#ifdef 、#ifndef、defined这3种形式