条件编译

一般情况下,在进行编译时对源程序中的每一行都要编译。但是有时希望程序中某一部分内容只在满足一定条件时才进行编译,也就是指定对程序中的一部分内容进行编译的条件。如果不满足这个条件,就不编译这部分内容。这就是“条件编译”。(可以有机会让编译器听你的话啦!)

有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。

例如,最近涉及到的,Qt环境下创建Dll以供其他项目调用(Shared Libraries )。

#include <QtCore/QtGlobal>
#ifdef MYSHAREDLIB_LIBRARY
#def MYSHAREDLIB_EXPORT Q_DECL_EXPORT
#else
#def MYSHAREDLIB_EXPORT Q_DECL_IMPORT
#endif

以前觉得条件编译没有什么用,现在发现就是自己在工作中没有遇到过,才很幼稚的以为没有用罢了。就像大学时候没有实践,学的东西提不上来兴趣。先上例子,这样有使用环境,知识理解起来也不难了。

条件编译命令常用的有以下形式:

#ifdef 标识符
    程序段1
#else
    程序段2
#endif

它的作用是当所指定的标识符已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。#endif用来限定#ifdef命令的范围。其中#else部分也可以没有。

#if 表达式
    程序段1
#else
    程序段2
#endif

它的作用是当指定的表达式值为真(非零)时就编译程序段1,否则编译程序段2。可以事先给定一定条件,使程序在不同的条件下执行不同的功能。
我一般都是写书上的练习题会用到上面的第二种条件编译形式。把之前写的函数或者模块用#if-#endif注掉,条件编译和注释很像嘛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值