博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
条件编译
阅读量:6794 次
发布时间:2019-06-26

本文共 1320 字,大约阅读时间需要 4 分钟。

由于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 
__BEGIN_DECLS # define __need_size_t# define __need_NULL# include
# include
# define __need_FILE# define __need___FILE#endif /* Don't need FILE. */
View Code

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

转载于:https://www.cnblogs.com/kelamoyujuzhen/p/9478541.html

你可能感兴趣的文章
wpf XMAL中隐藏控件
查看>>
ES profile 性能优化用——返回各个shard的耗时
查看>>
所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的...
查看>>
使用Java读取配置文件
查看>>
(筆記) 如何設計計數器? (SOC) (Verilog) (MegaCore)
查看>>
QTP的那些事--通过WMI获取session中的用户信息的验证码
查看>>
用Python对用户评论典型意见进行数据挖掘
查看>>
【12c新特性】12cR1中新加入的Statistic
查看>>
CentOS 安装tab命令补全
查看>>
postgresql - 三种安装方式
查看>>
主合同与补充合同的区别有哪些?
查看>>
用ViewPager布局,但是又不想预加载的问题
查看>>
python (知识点:类)简单的创建一个类
查看>>
LNMP相关
查看>>
关于coding中分支的使用方法及项目更新命令
查看>>
LINUX下邮件服务器
查看>>
day15:磁盘格式化和挂载
查看>>
harbor的加密机制与后台修改登录密码
查看>>
centos6安装禅道
查看>>
卸载安全狗
查看>>