zoukankan      html  css  js  c++  java
  • #define和预处理指令

    #define和预处理指令--(妖妖随笔)

    预处理过程是先于编译器对源代码进行处理(进行初步的转换),产生新的源代码提供给编译器。

    格式:预处理指令是以#开头的代码行,#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。

    #空指令             没有任何效果

    #include           引入一个源代码文件

    #define             定义宏

    #undef              取消定义宏

    #if                    如果条件为真,则编译下面的代码

    #elif                 如果前面的#if不为真,则编译下面的代码

    #endif              结束一个#if...#elif条件编译块

    #ifdef               如果已经定义了某个宏,则编译下面的代码

    #ifndef             如果没有定义某个宏,则编译下面的代码

    #error              停止编译并显示错误信息

    1.防止重复引用的代码:

    #ifndef A_H    意思是"if not define a.h"  如果不存在a.h

    #define A_H   就引入a.h

    #endif           否则不需要引入

    #ifndef _OBJC_RUNTIME_H  //如果不存在_OBJC_RUNTIME_H

    #define _OBJC_RUNTIME_H  //就引入_OBJC_RUNTIME_H(定义宏)

    #include <objc/objc.h>   //引入文件

    #include <stdarg.h>

    #include <stdint.h>

    #include <stddef.h>

    #include <Availability.h>

    #include <TargetConditionals.h>

    #if TARGET_OS_MAC        //如果条件为真,就编译下面的代码

    #include <sys/types.h>

    #endif                   //结束条件编译块

    2.根据条件创建一个Button:

            UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

            btn.frame = CGRectMake(0, 0, 100, 100);

            [btn addTarget:self action:@selector(btnClicked) forControlEvents:UIControlEventTouchUpInside];

            [self.view addSubview:btn];

    但是根据新的需求,这个Button暂时不需要显示在界面上面,这时候可以使用预处理指令来进行条件判断

    (1)第一种方法,定义一个具体的宏

    #define _SHOWBTN_ 0

    {

            UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

            btn.frame = CGRectMake(0, 0, 100, 100);

            [btn addTarget:self action:@selector(btnClicked) forControlEvents:UIControlEventTouchUpInside];

            [self.view addSubview:btn];

    #if _SHOWBTN_

            [self.view addSubview:btn];  //如果需要显示按钮,将其添加到父视图中

    #else

            //不将其添加到父视图中 

    #endif

    }

    使用:这时候如果想显示该Button对象,那么将#define _SHOWBTN_ 1,否则写为#define _SHOWBTN_ 0

    (2)第二种方法(定义一个没有数值的宏)

    #ifdef _SHOWBTN_

      [self.view addSubview:btn];

    #endif

    这段代码的意思就是如果定义了宏_SHOWBTN_,那么就将btn添加到父视图,如果没有定义的话,那么不添加到父视图。

    使用:这时候如果我们想要将其添加到父视图,则在文件的顶部写上#define _SHOWBTN_

    爱code的妖妖
  • 相关阅读:
    视图&索引&序列
    PL/SQL语言基础
    C#实现递归矩阵连乘(动态规划的递归自顶向下,非递归自地向上)
    JS 第五课
    请问,小丽的鞋子到底是什么颜色的?
    用10!来回顾 PL/SQL语言基础 && 标准异常名
    SELECT 查询—子查询
    备份和恢复
    JS 第六课
    Linux学习之二Linux系统的目录结构
  • 原文地址:https://www.cnblogs.com/yaoyao0110/p/4812144.html
Copyright © 2011-2022 走看看