美文网首页
预处理指令

预处理指令

作者: qianranow | 来源:发表于2018-06-13 14:46 被阅读31次

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

    相关文章

      网友评论

          本文标题:预处理指令

          本文链接:https://www.haomeiwen.com/subject/efpjeftx.html