条件编译(条件编译在程序运行时执行)

条件编译(条件编译在程序运行时执行)

今天给大家介绍条件编译,以及程序运行时条件编译和执行的相应知识点。希望对你有帮助,也别忘了收藏这个站点。

C语言中条件编译的作用

条件编译属于三种宏定义之一,条件指示符的主要作用是防止头文件的重复包含和编译。比如一个C文件多次包含同一个H文件,如果不添加#ifndef的宏定义,就会出现变量重复定义的错误。

条件编译中常用的预处理命令有四个:#if、#else、#elif和#endif。

#如果指令的形式为:

#if常量表达式

编码块

#endif

如果#if后面的常量表达式是一个值,则编译它和#endif之间的代码,否则跳过代码。指令#endif标识#if块的结束。

#else用于标记#if的结束和#else块的开始。这是必要的,因为只有一个#endif与任何#if相关联。

#elif的意思是“else if”,并为各种编译选项形成一个if else if嵌套语句。#elif后面跟一个常量表达式。如果表达式为真,则编译下面的代码块而不检测其他#elif表达式,否则按顺序测试下一个代码块。常见的形式如下:

表1:

#ifdef标识符

/*程序段1*/

#否则

/*程序段2*/

#endif

它的作用是当标识符已经被#define定义时编译程序段1,否则编译程序段2,或者使用简单的形式。

#ifdef标识符

/*程序段1*/

#endif

表2:

#ifndef标识符

#定义标识符

/*程序段1*/

#否则

/*程序段2*/

#endif

它的功能是当标识符还没有被#define定义时编译程序段1,或者以简单的形式编译程序段2。

#ifndef标识符

#定义标识符

/*程序段1*/

# endif

表格3:

#if表达式

/*程序段1*/

#否则

*第二部分*/

# endif

它的作用是当“表达式”的值为真时,编译程序段1。否则,编译程序段2,或者使用简单形式。

# if表达式

/*程序段1*/

# endif

表4:

#if表达式1

/*程序段1*/

#elif表达式2

/*程序段2*/

............

#elif表达式n

/*程序段n */

#endif

它的作用是当“表达式1”的值为1时编译程序段1,当表达式2的值为真时编译程序段2,否则依次判断表达式n。

最后,条件编译的条件是一个常量表达式,支持逻辑AND和OR ||运算。上述四种形式的条件编译预处理结构可以嵌套,

标识符:理论上可以自由命名,但是每个头文件的这个标识符要唯一。一般logo的命名规则是头文件名称大写,前后加下划线,加“.”在文件名中也带有下划线,例如stdio.h

#ifndef _STDIO_H_

#define _STDIO_H_

/*程序段*/

#endif

C语言中什么是条件编译?

一般情况下,源代码文件中的所有行都会被编译,但有时需要指定一部分代码在特定条件下进行编译。这种情况称为条件编译。

条件编译发生在预处理阶段。在C中,编译条件主要是通过#if、#elif、#else、#ifdef、#ifndef和#endif附加到一段代码上,然后预处理程序收集符合条件的编译器,这样预处理后不符合条件的代码就不会被编译。

我们来谈谈上述预处理指令的用法:

#如果条件1

语句块1

#elif条件2

语句块2

#否则

语句块3

#endif

可以看出,它与普通的条件结构语句非常相似,即满足条件1就编译句子块1,满足条件2就编译句子块2,满足条件2就编译句子块3。它必须以#endif结尾。

#ifdef和#ifndef的用法是:

#ifdef符号

语句块

#endif

#ifndef符号

语句块

#endif

Ifdef意味着如果定义了指定的符号,则编译下面的语句块;相反,如果未定义指定的符号,则编译下面的语句块。

预处理指令也可以添加到语句块中。像其他语句一样,这些预处理指令只有在满足条件时才会被处理。

此外,ifndef通常用于防止头文件的重复引用。

更多信息请参考百度百科:

C++常见条件编译用法

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

#ifdef标识符

程序段1

#否则

程序段2

#endif

它的作用是当标识符已经定义好(通常用#define命令定义)时编译程序段1,否则编译程序段2。

#else部分也可以省略,即:

#ifdef

程序段1

#endif

这里的“程序段”可以是一个语句组或一个命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序运行在不同的计算机系统上,并且不同的计算机有一定的差异。比如我们有一个数据类型,在Windows平台上要用long类型表示,在其他平台上要用float类型表示,这往往需要对源程序进行必要的修改,降低了程序的通用性。

条件编译的介绍到此结束。感谢您花时间阅读本网站的内容。当程序运行时,不要忘记搜索关于条件编译的更多信息。

以上就是由优质生活领域创作者 嘉文社百科网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~