预处理指令

0. 理解


  • 定义: 文件在 预处理阶段 的操作
  • 形式: 以 # 号开头
  • 分类: 宏定义条件编译文件包含

1. 宏定义


  • 作用:文件在 预处理阶段, 将所有 宏名 替换为 宏值
  • 规范
    • 宏名都 大写, 多个单词之间用 _ 隔开, 并且 每个单词 全部大写
    • 宏名以 k 开头, 多个单词之间用 驼峰命名
  • 分类
    • 不带参数
      #define CLASS_COUNT 100
      #define kClassCount 100
      
    • 带参数
      #define SQUARE(v) ((v)*(v))
      int main() {
        int res = SQUARE(2 + 2) / SQUARE(2 + 2) * SQUARE(2 + 2);
        printf("%d\n", res);
        return 0;
      }
      

2. 条件编译


  • 判断 条件
    #define SCORE 90
    int main() {
    #if SCORE == 100
      printf("非常满意\n");
    #elif SCORE == 99
      printf("优秀\n");
    #else
      printf("继续加油\n");
    #endif
    return 0;
    }
    
  • 判断 是否定义宏
    #define SCORE 90
    #define COUNT 30
    int main() {
    #ifdef SCORE
      printf("score\n");
    #elif COUNT
      printf("count\n");
    #else
      printf("other\n");
    #endif
    return 0;
    }
    
    #define SCORE 90
    #define COUNT 30
    int main() {
    #if defined(SCORE)
      printf("score\n");
    #elif defined(COUNT)
      printf("count\n");
    #else
      printf("other\n");
    #endif
    }
    
  • 判断 是否没有定义宏
    #define SCORE 90
    int main() {
    #ifndef SCORE
      printf("no score\n");
    #else
      printf("score\n");
    #endif
    return 0;
    }
    
    #define SCORE 90
    int main() {
    #if !defined(SCORE)
      printf("no score\n");
    #else
      printf("score\n");
    #endif
    return 0;
    }
    

3. 文件包含


  • 形式
    1. #include 
    
    2. #include "wx.h"
    
  • 作用: 将 " "< >内容 完全拷贝过来
    #include <>
    查找: 会先去编译器环境下查找, 找不到再去系统的环境下查找
    
    #include ""
    查找: 会先在当前文件查找, 找不到再去编译器环境下查找, 找不到再去系统的环境下查找
    
  • 注意
    1. 在 .h 文件 编写头文件卫士
    2. 间接拷贝
    3. 防止循环拷贝
    

你可能感兴趣的:(预处理指令)