zoukankan      html  css  js  c++  java
  • #ifdef、#ifndef、#else、#endif执行条件编译

         我们开发的程序不只在pc端运行,也要在移动端运行。这时程序就要根据机器的环境来执行选择性的编译,如对PC端编译PC端的程序,对移动端编译移动端的程序,这里我们就可以用两组条件编译。
         
    1. #ifdef #endif
    2. #ifndef #endif
    我们先来了解下#ifdef ...#endif;语法格式是:
    #ifdef 宏名字 |#ifdef 宏名字
    //任意代码 |//任意代码
    #endif |#else
    |//任意代码
    |#endif
    上面的两种格式是,如果指定了宏,就会执行#ifdef ... #endif中的代码。
    //
    //  main.m
    //  Hong_Test
    //
    //  Created by 程英暾 on 2017/3/20.
    //  Copyright © 2017年 程英暾. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #define iPad
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
    #ifdef iPad
            NSLog(@"this is ipad");
    #else
            NSLog(@"this is iphone");
    #endif
            
            
            // insert code here...
            NSLog(@"Hello, World!");
        }
        return 0;
    }
    执行的结果就是:
    2017-03-20 22:54:22.010569 Hong_Test[8061:318230] this is ipad
    我们来分析一下,首先我们定义了宏#define iPad,接下来程序会对宏进行查找,找到后,就会根据我们定的条件编译需要编译的程序。其实和if...else...if差不多。但为什么会有这种些,事物存在就有存在意义,有两点,1.我们在调试程序时会写很多语句,在正式布时只要去掉宏就可以了,其二这种条件编译可以减少程序的体积。
    下面我们用#if...#else...#endif来进行一个实例操练,结束今天的学习
     //
    //  main.m
    //  Hong_Test
    //
    //  Created by 程英暾 on 2017/3/20.
    //  Copyright © 2017年 程英暾. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    #define age 30
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
    #if age>60
            NSLog(@"老人");
    #elif age>40
            NSLog(@"中年人");
    #elif age>20
            NSLog(@"青年");
    #endif
         
        }
        return 0;
    }

    结果:青年

  • 相关阅读:
    赫尔维茨公式
    从解析几何的角度分析二次型
    Struts 1 Struts 2
    记一次服务器被入侵的调查取证
    契约式设计 契约式编程 Design by contract
    lsblk df
    Linux Find Out Last System Reboot Time and Date Command 登录安全 开关机 记录 帐号审计 历史记录命令条数
    Infrastructure for container projects.
    更新文档 版本控制 多版本并发控制
    Building Microservices: Using an API Gateway
  • 原文地址:https://www.cnblogs.com/c546170667/p/6592294.html
Copyright © 2011-2022 走看看