码迷,mamicode.com
首页 > 编程语言 > 详细

C++中#ifdef、#endif等宏的使用

时间:2014-11-07 17:02:22      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:c++      条件编译   #ifdef   #endif   

一般情况下,源程序中所有的行都参加编译。但是有时希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句,这就是“条件编译”。

为了满足条件编译可以使用#ifdef#ifndef#endif等宏指令。

条件编译命令最常见的形式为:

(1)如果宏定义了标识符1,则执行程序段1。

#ifdef  标识符1

    //程序段1

#endif

(2)如果宏定义了标识符1,则执行程序段1;否则执行程序段2。

#ifdef  标识符1

    //程序段1

#else

    //程序段2

#endif

上面的“程序段”可以是语句组,也可以是命令行。“标识符”可以使表达式。#ifdef可以由#ifndef替换,定义完全相反,如(1)中#ifdef由#ifndef替换

 

 

下面具两个例子说明#ifdef、#ifndef、#endif等宏指令的使用。

例子1:

如果我们在编写程序时,调试时希望输出一些信息以便于调试,而调试完成后这些信息是不需要输出的,那么我们可以这么做:

#define  DEBUG

 

#ifdef  DEBUG

    //调试时需要输出的信息语句

#endif

当我们调试完成后,直接把语句#define  DEBUG删掉即可,然后#ifdef DEBUG和#endif之间定义的语句便不会被执行。

 

例子2 :

当A 大于0输出A,A小于0输出-A

#ifdef  ISPOSITIVE

 

#ifdef  ISPOSITIVE

    cout<<A;

#else

    cout<<-A;

#endif

假设我们输入的一直是正数,则定义#ifdef ISPOSITIVE,如果输入一直是负数,则删掉定义#ifdef ISPOSITIVE即可。

 

总结:

条件编译可以提高C++源程序的通用性。比如例子1中如果输出信息特别多,不使用条件编译也行,但是修改程序量太大。

采用条件编译,可以减少被编译的语句,从而减少目标的长度。当条件编译段比较多时,目标程序长度可以大大减少。比如例子2如果用if语句代替,那么if语句的所有内容都需要编译,即目标程序太长,而使用条件编译则选择性编译,缩减了目标函数长度(如果语句十分长,完全体现了这种优势)。

 

C++中#ifdef、#endif等宏的使用

标签:c++      条件编译   #ifdef   #endif   

原文地址:http://blog.csdn.net/u010213393/article/details/40894619

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!