`
fpwjp
  • 浏览: 45186 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

#if条件编译指令行禁止

    博客分类:
  • C++
阅读更多

      条件编译是指按照给定的条件决定哪些源代码参与编译,而哪些源代码不参与编译,从而使一个源程序在不同编译条件下生不同的目标程序。C++提供几种不同形式的条件编译指令,可以将一个表达式或者某个宏是否被定义作为编译条件,主要用于设计便于调试的程序或可移值的程序。

      条件编译指令有多种,其结构类似于if语句结构。条件编译指令分别以#if、#ifdef或#ifndef指令开始,中间可以有#else指令,最后以#endif指令表示一条编译指令的结束。下面给出条件编译指令常用的三种形式:

 

#if...[#else]...#endif

#ifdef...[#else]...#endif

#ifndef...[#else]...#endif

      #if指令检测其后表达式的值是否为真,如果为真,则随后的源代码要参与编译,直到出#else或#endif;如果不为真,则随后的源代码不参与编译。#ifdef指令是#if defined指令的缩写,它检测其后的宏是否被定义,如果被定义过,则随后的源代码要参与编译。#ifndef指令也检测其后的宏是否被定义,但不同的是,只有当该宏没有被定义过,随后的源代码参与编译。

 

例  使用条件编译指令

 

(1)#if指令的用法

#include <iostream.h>
#define MAX 100                   //宏定义
void main()
{
	#if MAX > 99                      //条件编译
		cout << "MAX is greater than 99 !" << endl;
	#else
		cout << "MAX is small !" << endl;
	#endif
}

 

      在程序中,由于MAX定义的值大于99,所以#if和#else之间的源代码要参与编译。程序运行后显示:

MAX is greater than 99 !

 

(2)#ifdef指令用法

#include <iostream.h>
#define DEBUG												//宏定义
int main()
{
	int nDebug=50;
	int nRealse=6;

	#ifdef DEBUG												//条件编译
		cout <<"DEBUG:value of version is " << nDebug << endl;	//调试版
	#else
		cout <<"RELEASE:value of version is " << nRealse << endl;//正式版
	#endif

    #ifndef DEBUG												//条件编译
		cout <<"DEBUG:value of version is " << nDebug << endl;	//调试版
	#else
		cout <<"RELEASE:value of version is " << nRealse << endl;//正式版
	#endif

	return 1;
}

 

     在程序中,标识符DEBUG是否被#define指令定义作为编译条件。利用#ifdef指令,根据DEBUG是否被定义确定具体编译哪一条源代码。程序运行后显示:

DEBUG:value of version is 50
RELEASE:value of version is 6

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics