什么是预处理命令预处理命令在我之前看过的C语言基础教程中好像并没有详细说到,在现在的一些项目中预处理命令的出现频率却越来越多 。事物的存在必有其存在的理由,于是就花时间去琢磨了一下,以及查阅相关资料,发现使用预处理命令去优化代码可以达到很好的效果 。预处理命令在某资料中是这样描述的"C程序的源代码中可包括各种编译指令,这些指令称为预处理命令 。虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境" 。预处理命令实质上是运行在编译器编译过程的指令 。所以说在嵌入式程序设计中使用预处理命令不会占用最终目标运行系统的存储空间 。
预处理命令有哪些在ANSI标准定义的C语言预处理程序中包括下列命令:
#include,#define,#if,#else,#elif,#endif,#ifdef,#ifndef,#error,#undef,#line,#pragma等 。从以上可以看出预处理命令的共同特点就是以"#"开头 。下面就分别介绍几个在项目中使用比较多的预处理命令 。
- #include
使用方法或者格式:
#include <xxx.h>- #define
需要注意的是,预处理指令不是语句,所以后面不能加分号 。
使用方法或者格式:
#define xxx 1 //定义常量#define xxx 'a' //定义字符#define xxx "abcb" //定义字符串#define xxx abc() //定义函数还可以这样:#define XX_ABS(x) ((x)>=0? (x):-(x)) //返回绝对值#define XX_SIGN(x) ((x<0)?-1:((x>0)?1:0)) //正数返回 1,负数返回 -1 零返回 0- #ifndef
条件指示符#ifndef的最主要目的是防止头文件的重复包含和编译 。条件编译当然也可以用条件语句来实现,但是用条件语句将会对整个源程序进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段1或程序段2,生成的目标程序较短 。如果条件选择的程序段很长,采用条件编译的方法是十分必要的 。
假如你有一个C源文件,它包含了多个头文件,比如头文件A和头文件B,而头文件B又包含了头文件A,则最终的效果是,该源文件包含了两次头文件A 。如果你在头文件A里定义了结构体或者类类型(这是最常见的情况),那么问题来了,编译时会报大量的重复定义错误 。
使用方法或者格式:
//经常在H文件(头文件)看到是格式:#ifndef 标识符#define 标识符/*************程序段***************/#endif其他格式:#ifndef表达式/***********程序段 1***********/#else/***********程序段 2***********/#endif- #if,#else,#elif,#endif
使用方法或者格式:
格式1
#if XXX/*****程序段*****/#endif
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 中国发射失败的卫星 中国火箭残骸
- 猎杀大脚怪游戏 猎杀大脚怪
- 夜空中最闪亮的星拍摄地点 夜空中的光
- 你想象中的机器人是什么样的 机器人说什么比较有意思
- 莳萝籽在调料中作用,莳萝在烹调中的作用及用法
- 京口瓜洲一水间钟山只隔数重山诗中的京口是现在的哪里?京口瓜洲一水间,钟山只隔数重山.意思
- 星空越黑暗,星光越明亮 星空一天之中的变化
- 了解 FreeDOS 中的文件名和目录
- excel表格如何设置自动换行,excel表格中的自动换行怎么设置-
- 非洲树皮有什么功效?
