微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 学习笔记--C语言的预处理--条件编译

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

时间:11-26 来源:互联网 点击:
预处理名称意义

#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 阶梯状语句,可进行多种编译选择。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top