文章目录[隐藏]
今天给大家介绍条件编译,以及程序运行时条件编译和执行的相应知识点。希望对你有帮助,也别忘了收藏这个站点。
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类型表示,这往往需要对源程序进行必要的修改,降低了程序的通用性。
条件编译的介绍到此结束。感谢您花时间阅读本网站的内容。当程序运行时,不要忘记搜索关于条件编译的更多信息。
以上就是由优质生活领域创作者 嘉文社百科网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文地址:https://www.jwshe.com/838523.html,转载请说明来源于:嘉文社百科网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场。