C/C++预处理命令

2019-07-16  本文已影响0人  LogyKoala
  1. 宏定义:#define

    1. 将一个指定的标识符来代表一个字符串
      写法:#define 标识符 字符串
    2. 定义参数的宏定义
      写法:#define 宏名 字符串
  2. 文件包含
    指一个源文件将另一个源文件的全部内容包含进来,也就是将另外的文件包含到本文件之中。
    写法:
    1、#include<文件名> 在系统目录中寻找
    2、#include"文件名" 先在指定目录中寻找,然后再去系统目录中寻找,如果没有给出绝对路径,则先在用户当前目录中寻找

  3. 条件编译

    #ifndef
      #ifdef 标识符 //当指定的标识符已经被#define命令定义过,则只编译程序段1
             程序段1 
      #else  //否则,编译程序段2
             程序段2 
      #endif //限定¥ifdef命令的范围,不然会一直向下执行
    

    eg:

    #ifndef LOG_TAG
    #define LOG_TAG "JNI"
    #else
    #endif
    
    #if 表达式 //表达式为真时,编译程序段1
        程序段1 
    #else //否则,编译程序段2
        程序段2
    #endif //结束#if命令,不然会一直向下执行
    

    eg:

    #define IS_DEBUG true
    #endif
    #if IS_DEBUG
    #define LOG_TAG "JNI"
    #else 
    #define LOG_TAG "TAG"
    #endif
    
  4. 常见的预处理指令

     #define         宏定义 
     #undef          取消宏 
     #include        文本包含 
     #ifdef          如果宏被定义就进行编译 
     #ifndef         如果宏未被定义就进行编译 
     #endif          结束编译块的控制 
     #if             表达式非零就对代码进行编译 
     #else           作为其他预处理的剩余选项进行编译 
     #elif           这是一种#else和#if的组合选项 
     #line           改变当前的行数和文件名称 
     #error          输出一个错误信息 
     #pragma         为编译程序提供非常规的控制流信息 
    
  5. 常用预定义宏

    1. _LINE_  //当前源文件的行号,整数
    2. _FINE_ //当前源文件名,char字符串,使用/FC选项产生全路径
    3. _DATE_ //当前编译日期,char字符串,格式月 日 年
    4. _TIME_ //当前编译时间,char字符串,格式时:分:秒
    5. _STDC_ //整数1,表示兼容ANSI/ISOC标准,配合#if使用
    6. _TIMESAMP_ //最后一次修改当前文件时间戳,char字符串,格式星期 月份 日期 时:分:秒 年
    
上一篇 下一篇

猜你喜欢

热点阅读