zoukankan      html  css  js  c++  java
  • 条件编译

    由于C++兼容C语法,所以C的条件编译,在C++中也适用。

    什么是条件编译

    从“条件编译”这个名字上就能看出,所谓“条件编译”其实就是“按照条件去编译”。也就是“预编译”时,预编译器处理“条件编译”时,可以通过“条件编译”帮你保留某些代码、以及帮你去掉某些代码,第二阶段编译时就只编译保留的代码。一般情况下,C源程序中的每一行代码都要参加编译的,但有时候出于对程序代码优化的考虑、或者其它方面的考虑,我们只希望对其中一部分内容进行编译,此时就需要在程序中加上条件(条件编译),让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃。

    条件编译意义

    对于跨平台程序,需要在同一个程序中编写出针对不同情况(比如不同OS、硬件环境)的代码,编译程序时为了编译得到针对不同情况的可执行程序,我们需要使用条件编译来做选择。

    疑问:为什么不直接全部编译呢?

    这样子会导致我们的可执行程序非常大,因为里面不仅包含了我们需要的代码,还包含了很多用不到的代码。但是使用条件编译将不需要的代码去掉后,就不存在这样的情况了。程序变小之后,程序不管是静态存储在硬盘上,还是运行在内存中时,将会非常节省计算机的硬盘空间和内存空间。特别是当你的程序非常庞大时,又或者是当你的计算机资源本来就不是很足时,这一点就显得更重要了。

    条件编译种类

    条件编译有2种

    第一种:#ifdef、#ifndef

    第二种:#if 

    共性:

    ①都可以和#elif、#else的搭配使用。且#elif、#else、defined等,只能与#if #ifdef搭配使用,不能独立使用

    ②结尾时都是必须使用#endif结尾

    ③条件编译所包含的可以是任何内容

    条件编译的排版

    条件编译没有互相嵌套时

    所有条件编译关键字语句顶格左对齐。

    #if 0
    ...
    #elif  1
    ...
    #endif
                                            
    #ifdef NUM 
    ..
    #else 
    ...
    #endif
    View Code

    条件编译之间有嵌套时

    嵌套的条件编译需要进行缩进,如果里面有包含#define、#include的话,define、include也需要缩进。

    #if !defined __need_FILE && !defined __need___FILE
    # define _STDIO_H       1
    # include <features.h>
    
    __BEGIN_DECLS 
    
    # define __need_size_t
    # define __need_NULL
    # include <stddef.h>
    
    # include <bits/types.h>
    # define __need_FILE
    # define __need___FILE
    #endif /* Don't need FILE.  */
    View Code

    #是不用缩进,#和define、include中间隔有空格是没有问题的。

  • 相关阅读:
    运维安全、架构、日志管理等要安装的东西,一直在更新,欢迎大家评论
    http协议的发展史
    uni-app实现通话录音实时上传、后端php-安卓手机
    uni-app H5 plus.io 获取手机指定路径目录下所有文件
    Laravel框架部署过程中的步骤:安装 composer、切换镜像、安装laravel、创建项目
    vue 强制修改el-input样式
    ide激活码,可激活goland、phpstorm、webstorm、Pycharm
    PHP转Go函数库
    Uni-app父组件如何调用子组件的方法 | 父页面如何调用子页面的方法
    Uni-app子组件如何调用父组件的方法 | 子页面如何调用父页面的方法
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9478541.html
Copyright © 2011-2022 走看看