×
嵌入式 > 技术百科 > 详情

学习笔记--C语言的预处理--条件编译

发布时间:2020-06-09 发布时间:
|
预处理名称意义

#define 宏定义 

#undef 撤销已定义过的宏名

#include 使编译程序将另一源文件嵌入到带有#include 的源文件中  

#if  #else  #elif #endif等条件编译

#line 改变当前行数和文件名称,它们是在编译程序中预先定义的标识符

命令的基本形式如下:#line number["filename"]

#error 编译程序时,只要遇到#error 就会生成一个编译错误提示消息,并停止编译

#pragma  为实现时定义的命令,它允许向编译程序传送各种指令例如,编译程序可能有一种选择,它支持对程序执行的跟踪。可用#pragma 语句指定一个跟踪选择。

条件编译
条件编译的功能使得我们可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。条件编译有三种形式,下面分别介绍

第一种形式:
#ifdef 标识符
程序段1
#else
程序段2
#endif

它的功能是,如果标识符已被#define 命令定义过则对程序段1 进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else 可以没有,即可以写为:
#ifdef 标识符
程序段
#endif
第二种形式:
#ifndef 标识符
程序段1
#else
程序段2
#endif
与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define 命令定义过则对程序段1 进行编译,否则对程序段2 进行编译。这与第一种形式的功能正相反。

第三种形式:
#if 常量表达式
程序段1
#else
程序段2
#endif
它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2 进行编译。因此可以使程序在不同条件下,完成不同的功能。
至于#elif 命令意义与else if 相同,它形成一个if else-if 阶梯状语句,可进行多种编译选择。

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
NTMD6N03R2G的技术参数