`
fpwjp
  • 浏览: 45955 次
  • 性别: 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

 

分享到:
评论

相关推荐

    c语言条件编译精讲

    `#if` 是最基础的条件编译语句,它允许根据一个表达式的真假来决定是否编译某段代码。其语法结构如下: ```c #if 表达式 程序段1 #else 程序段2 #endif ``` 如果表达式的结果为非零(即真),则编译器会编译`...

    c语言条件编译详解

    - **条件编译**:利用`#if`、`#ifdef`、`#ifndef`等指令,根据特定条件决定哪些代码会被编译。 #### 三、文件包含详解 在C语言中,文件包含是通过`#include`指令实现的。有两种常用的格式: - `#include ...

    Flex(ActionScript) 开发,实现条件编译(类似C++ #if DEBUG)

    条件编译类似于C++中的预处理指令,如`#if DEBUG`,通过定义和使用编译时常量来控制代码块的编译和执行。 首先,Flex的MXML编译器允许你将常量值传递给应用程序。为了实现这一点,你需要使用`-define`编译器选项来...

    C# #define条件编译详解

    通过#if...#else...#endif结构,可以编写在特定条件下编译的代码块。例如: ```csharp #if Dragon Console.WriteLine("Dragon is defined"); #else Console.WriteLine("Dragon is not defined"); #endif ```...

    DELPHI定义的条件编译的全部说明

    ### DELPHI定义的条件编译的全部说明 #### 一、引言 在Delphi编程语言中,条件编译是一种强大的工具,它允许开发者根据特定条件决定代码段是否会被编译进最终的可执行文件中。这对于创建适应不同平台、版本控制、...

    单片机基础c语言之条件编译.rar_单片机基础c语言之条件编译

    在C语言中,我们通常使用`#if`、`#ifdef`、`#ifndef`、`#else`和`#endif`等预处理器指令进行条件编译。 1. `#if`:此指令用于检查紧跟其后的表达式的值。如果表达式求值结果为非零(true),则编译该指令后面的代码...

    #ifdef,#else,#endif,#if用法详解

    #ifdef、#else、#endif、#if 是 C++ 预处理命令中最为常用的四个命令,它们都是用来实现条件编译的。下面我们将详细地介绍它们的用法和实例分析。 #ifdef 命令 #ifdef 命令是用来判断一个宏是否已经被定义,如果宏...

    C语言的条件编译[参考].pdf

    这使得编写更复杂的条件编译指令成为可能,例如 `#if defined(MACRO1) || (!defined(MACRO2) && defined(MACRO3))`。 ### 4. 条件编译技巧与示例 #### (1) `#ifdef` 和 `#defined()` 比较 `#ifdef` 主要用于检查...

    c c++ 条件编译及其他

    条件编译指令如`#if`, `#ifdef`, `#ifndef`, `#elif`, `#else`, 和 `#endif`则提供了根据宏定义或其他条件决定是否编译某段代码的能力。例如,`#if`后面跟随一个布尔表达式,如果表达式为真,则编译其后的代码;`#...

    c语言#ifdef等宏及妙用

    `#if` 指令更为灵活,它允许使用表达式来作为判断条件。 ``` #if 表达式 // 程序段1 #else // 程序段2 #endif ``` 如果`表达式`的结果为非零(即真),则编译`程序段1`;否则编译`程序段2`。 #### 示例分析 ##### ...

    清除c/c++代码中条件编译部分的程序,帮助阅读源代码,生成好的tags

    网上众多的开源C/C++代码,因为跨平台的需要,参杂了许多的条件编译语句,对阅读源代码造成了不方便,而且用ctags等工具生成源代码的tags文件时会有些妨碍,本工具就是用来预处理这些条件编译的,将未定义的区域自动...

    条件编译解释

    ### 条件编译解释 #### 一、概述 在软件开发过程中,为了适应不同的编译环境或根据特定的需求选择性地编译代码段,条件编译作为一种重要的预处理指令被广泛应用于各种编程语言中。其中,C语言中的`#ifdef`...`#...

    C语言的条件编译.pdf

    - #elif:在前面的#if或#else条件未满足时,根据elif后的条件判断是否编译随后的代码块。 - #else:在前面的#if或#endif条件不满足时,编译else后的代码块。 - #endif:结束条件编译的代码块。 - #ifdef:如果指定的...

    C语言预处理命令之条件编译(_ifdef,_else,_endif,_if等)

    C语言预处理命令之条件编译(#ifdef、#else、#endif、#if等) C语言中没有内在的机制来完成一些功能,如在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理...

    单片机C语言实例--308-条件编译应用举例.zip

    在C语言中,`#ifdef`,`#ifndef`,`#if`,`#else`,`#elif` 和 `#endif` 是条件编译的主要控制关键字。这些指令在编译器处理源代码之前执行,根据宏定义的状态决定后续代码的命运。例如,`#ifdef MACRO` 检查是否...

    简单记录C# 条件编译

    #if CustomDebug Console.WriteLine(dsads); #endif 以上所述就是本文的全部内容了,希望大家能够喜欢 您可能感兴趣的文章:C# 编译生成dll文件供程序调用的两种方法C# #define条件编译详解C#实现将javascript文件...

    5152单片机proteus仿真和源码条件编译应用举例

    最常用的条件编译指令有`#ifdef`、`#ifndef`、`#if`等。 #### 2. 在单片机开发中的应用 - **代码复用**:通过条件编译可以实现不同平台下的代码复用,避免重复编写相同功能的代码。 - **调试辅助**:在开发过程中,...

    什么是预编译

    3. #if、#else 和 #endif 指令:这些指令通常用于条件编译,例如: * #if defined(标识符) * 要执行的指令 * #else * 要执行的指令 * #endif 预编译头文件是指在编译过程中生成的中间文件,它包含了预编译后...

    预编译资料 预编译资料

    - **`#if 常量表达式`**:如果常量表达式的值为真,则编译程序段1;否则编译程序段2。 示例: ```c #define English 1 int main() { #if English printf("Hello!\n"); #else printf("你好!\n"); #endif ...

Global site tag (gtag.js) - Google Analytics