`
huozheleisi
  • 浏览: 1291727 次
文章分类
社区版块
存档分类
最新评论

vc++学习篇(三)——预处理命令之条件编译(#ifdef,#else,#endif,#if等)

 
阅读更多
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。
关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以下分3种情况:

1:情况1:
#ifdef _XXXX
...程序段1...
#else
...程序段2...
#endif
这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。

例:
#define NUM
.............
.............
.............
#ifdef NUM
printf("之前NUM有过定义啦!:) /n");
#else
printf("之前NUM没有过定义!:( /n");
#endif
}
如果程序开头有#define NUM这行,即NUM有定义,碰到下面#ifdef NUM的时候,当然执行第一个printf。否则第二个printf将被执行。
我认为,用这种,可以很方便的开启/关闭整个程序的某项特定功能。


2:情况2:
#ifndef _XXXX
...程序段1...
#else
...程序段2...
#endif
这里使用了#ifndef,表示的是if not def。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。例子就不举了。


3:情况3:
#if 常量
...程序段1...
#else
...程序段2...
#endif
这里表示,如果常量为真(非0,随便什么数字,只要不是0),就执行程序段1,否则执行程序段2。
我认为,这种方法可以将测试代码加进来。当需要开启测试的时候,只要将常量变1就好了。而不要测试的时候,只要将常量变0。

分享到:
评论

相关推荐

    #ifdef,#else,#endif和#ifndef的用法

    #ifdef、#else、#endif 和#ifndef 是 C/C++ 预处理命令中条件编译的四个基本指令,它们可以帮助开发者在编译前对代码进行选择性编译,从而实现代码的灵活使用和高效编译。 #ifdef 指令的用法 #ifdef 指令用来检测...

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

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

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

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

    c语言预处理和条件编译

    - **`#if`、`#elif` 和 `#else`**:这些指令允许基于宏的值来控制代码的编译流程。例如: ```c #if AA // 如果宏AA被定义且非零,则执行这部分代码 #elif BB // 否则,如果宏BB被定义且非零,则执行这部分代码...

    C语言之详解#ifdef等宏

    通过本文的学习,我们可以了解到 C 语言中的预处理指令如 `#ifdef`, `#ifndef`, `#if` 等在实现条件编译方面的强大功能。这些指令不仅可以帮助程序员实现代码的条件编译,还能在跨平台编程和调试等方面发挥重要作用...

    #ifndef、#def、#endif等宏的意思.pdf

    其中,#ifndef、#def、#endif等宏是C语言预处理命令中的重要组成部分,它们在条件编译中起着至关重要的作用。 #ifndef宏 #ifndef宏是C语言预处理命令中的一种,它的作用是:当标识符未被定义时,编译程序段1,否则...

    条件编译解释

    `#ifdef`...`#endif`是C语言预处理器提供的条件编译指令之一,用于检查某个宏是否已被定义。如果该宏已经被定义,则包含在这对指令之间的代码会被编译;如果没有被定义,则这部分代码将被忽略。 #### 三、语法结构 ...

    预处理命令的学习心得.txt

    常用的条件编译指令有`#ifdef`、`#ifndef`、`#if`等。 ##### 1. #ifdef 和 #ifndef 这些指令用于检查宏是否已定义: ```c #ifdef WINDOWS // Windows-specific code #endif #ifndef LINUX // Non-Linux code #...

    零点起飞学C之不是代码的代码——预处理PPT学习教案.pptx

    条件编译`#if`、`#ifdef`、`#ifndef`、`#else`、`#endif`等允许根据特定条件编译相应代码,这对于多平台开发和条件编译块的管理非常有用。例如,可以依据某个宏定义是否存在来决定是否编译某段代码。 布局控制还...

    C语言预处理命令大全

    - `#if`: 开始一个条件编译块。 - `#ifdef`/`#ifndef`: 检查宏是否已被定义。 - `#else`: 在前面的条件不成立时使用。 - `#elif`: 提供多个条件选项。 - `#endif`: 结束一个条件编译块。 **示例**: ```c #define ...

    介绍c语言中条件编译相关的预编译指令

    #if 命令是编译预处理中的条件命令,相当于 C 语法中的 if 语句。 例如: ```c #if _DEBUG // ... #endif ``` 4. #ifdef #ifdef 命令判断某个宏是否被定义,若已定义,执行随后的语句。 例如: ```c #ifdef _...

    C语言预处理命令总结.pdf

    #if命令的含义是如果#if后面的常量表达式为true,则编译它与#endif之间的代码,否则跳过这些代码。命令#endif标识一个#if块的结束。 #else命令的功能有点象C语言中的else ;#else建立另一选择(在#if失败的情况下)...

    C_语言课后习题_预处理命令

    这些指令通常包括宏定义(#define)、条件编译(#if, #else, #elif, #endif)、头文件包含(#include)等。下面我们将深入探讨预处理命令的相关知识点。 首先,让我们重点关注`#define`这个标签,它是C语言预处理器...

    两个点H文件相互包含时的一种避免在编译的时候conflict的方法.docx

    在C语言中,条件编译是通过使用预处理命令来实现的,如#ifdef、#ifndef、#if等。 #ifdef命令的妙用 ifdef命令是条件编译中最常用的命令之一,它的作用是:当标识符已经被定义过时,编译程序段1,否则编译程序段2。...

    c语言条件编译精讲

    `#if`-`#elif` 结构类似于C语言中的`if`-`else if` 语句,可以检查多个条件,并选择第一个满足条件的程序段进行编译。其结构如下: ```c #if 表达式1 程序段1 #elif 表达式2 程序段2 ... #elif 表达式n 程序段n ...

    C语言预处理命令

    预处理命令通常用来控制程序的编译过程,包括宏定义、文件包含以及条件编译等。这些命令都是以`#`字符开头的。 #### 二、详细知识点解析 ##### 1. `#define` 宏定义 - **基本形式**:`#define identifier string`...

    条件编译

    条件编译是一种预处理功能,在C语言中主要用于根据不同的条件选择性地编译程序的某一部分。这一功能通常用于控制源代码中特定部分的编译过程,特别是在调试阶段或是针对不同平台的编译配置上具有重要作用。 #### ...

    C语言预处理、结构体和make的使用--C语言预处理命令

    条件编译主要包括`#ifndef`、`#ifdef`、`#if`、`#else`、`#elif`和`#endif`等指令。 - `#ifndef`和`#endif`用于检查某个标识符是否已被定义,如果没有定义,则编译其间的代码。 - `#ifdef`和`#endif`与`#ifndef`...

Global site tag (gtag.js) - Google Analytics