zoukankan      html  css  js  c++  java
  • #define和他的小伙伴们

    一、 明显常量:#define

    1.1 基本定义

    指令的位置:  

    1)老版本:指令从最左侧开始,且指令与#之间不能有空格老版本要求之前不能有空格。ANSI:#前可有空格或制表符,,#与指令之间也可以有空格。

    2)指令可以出现在源文件的任何地方,指令的作用域从定义出现的位置开始至文件结尾。

    组成结构:

    由三部分组成:第一部分为#define自身;第二部分为缩略语(宏);第三部分为替换列表(主体)

    1.2常见用法:

    二、#undef

    #undef 指令取消定义一个给定的#define.

    假设有如下定义:

    #define LINI 34

    则指令:
    #undef LINI

    会取消定义。现在可以重新定义LINI。如果开始没有定义LINI,取消LINI的定义也是合法的。想使用一个特定名字,不能确定是否使用过,则可以取消名字的定义。

    三、条件编译

    3.1   #ifde、#else、#endif

    #ifdef MAVIS
        #include "horse.h" //如果已经用#define定义了MAVIS,则执行这里的命令
        #define  STABLE 5
    #else
         #include “cow.h” //如果没有用#define定义MAVIS,则执行这里的命令
        #define STABLE 15
    #endif
    

     3.2  #ifndef

       类似于#ifdef指令,#ifndef指令可以与#else、#endif指令一起使用。#ifndef判断后面的标志符是否为未定义的,#ifndef的反义词是#ifdef。#ifndef通常用来定义此前未定义的常量。

    #ifndef SIZE
        #define SIZE 100
    #endif
    

     3.3 #if和#elif

      #if指令特别像C中的if :#if 后面跟常量整数表达式。如果表达式为非零值,则表达式为真。在该表达式中可以使用C的关系运算符和逻辑运算符。

    例如:

    #if SYS == 1
        #include "ibmpc.h"
    #elif SYS == 2
        #include"vax.h"
    #elif SYS == 3
        #include"mac,h"
    #else
        #include"general.h"
    #endif
    

       define 是一个预处理器运算符。如果defined 的参数已经用#define 定义过,那么define 返回 1 ;否则返回0。这种方法的好处在于它可以和#elif一起使用。重写上面的示例。

    #if define (IBMPC)
        #include "ibmpc.h"
    #elif define(VAX)
        #include "vax.h"
    #elif define(MAC)
        #include "mac.h"
    #else
        #include "general.h"
    #endif
    

     (内容源于:C Primer Plus)

  • 相关阅读:
    python 列表 字典的操作补充
    RPC远程过程调用
    python-迭代器 生成器 可迭代对象
    Semaphore源码分析
    CyclicBarrier源码分析
    CountDownLatch源码分析
    ReentrantLock源码分析
    AQS源码分析
    Mac下使用Clion调试MySQL源码配置流程
    hooks版本的pureComponent
  • 原文地址:https://www.cnblogs.com/blogwww/p/9471382.html
Copyright © 2011-2022 走看看