嵌入式C语言培训——预处理伪指令的应用 点击:397 | 回复:0



粤嵌嵌入式

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:174帖 | 0回
  • 年度积分:0
  • 历史总积分:568
  • 注册:2018年6月28日
发表于:2019-04-02 15:51:43
楼主

  在嵌入式开发中,C语言的重要性毋庸置疑。嵌入式C语言培训提到,用C语言编写的应用软件,可大大提高软件的可读性,缩短开发周期,便于系统的改进和扩充,这为开发大规模、高性能和高可靠性的应用系统提供了基本保证。今天本文主要讲的是嵌入式C语言的“预处理伪指令”,大家可以跟粤嵌了解一下。

  嵌入式C语言程序设计时利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计语言。如何能够在嵌入式系统开发中熟练、正确地运用C语言开发出高质量的应用程序,是学习嵌入式程序设计的关键。

  在C语言源程序中常常加入一些“预处理指令”,可以改进程序设计的环境,提高编程效率。它虽然写在源程序中,但不产生程序代码,因此也称为预处理指令。它不是C语言本身的组成部分,因此不能直接进行编译,而必须在编译前预先对这些特殊的指令进行“预处理”。在预处理时用“预处理命令”定义的实际内容代替该命令,因此也称为“编译预处理器”或“编译预处理伪指令”。

  C语言所有预处理伪指令都以#号开头,以区别于源文件中的语句行与说明行。与处理伪指令有以下3种:文件包含、宏定义和条件编译。

  预处理指令有以下特点:

  把文件包含的正文替换进来,如标准头文件和自定义头文件,其内容包括符号常量、符合变量原型、用户定义的变量类型原型和函数的原型说明等。

  对宏定义进行宏扩展,减少了编程量,改进源程序的可读性,参数宏更减少了函数调用的开销。

  条件编译改善了编程的灵活性,也改善了可移植性。

  所有预处理器伪指令都以#号开头,以区别于源文件中的语句行和说明行。

  下面分别对预处理伪指令进行详细介绍。

  1.文件包含伪指令

  文件包含伪指令可将头文件包含到程序中,头文件中定义的内容包括符号常量、符合变量原型、用户定义的变量类型原型和函数的原型说明等。编译器编译预处理时用文件包含的正文内容替换到实际程序中。

  1)文件包含伪指令的格式

  #include<头文件名.h>                       ;标准头文件

  #include“头文件名.h”                    ;自定义头文件

  #include 宏标识符

  2)包含文件伪指令的说明

  习惯上头文件名后用.h作为扩展名,可带或不带路径。

  头文件可分为标准头文件与自定义文件。

  尖括号对内的头文件为标准头文件。标准头文件按DOS系统的环境变量include所指定的目录顺序搜索头文件。

  双引号岁“”内的头文件名为用户自定义头文件。搜索时,首先在当前目录中搜索,其次按环境变量include指定的目录顺序搜索。

  搜索到头文件后,就将该伪指令直接用头文件内容替换。

  第3种格式中的宏标识符预处理器首先对它进行宏扩展。宏扩展后得到的可能是括号内的头文件名或双引号对内的投文件名。其后,就可按前2中格式之一来处理。

  3)包含文件伪指令举例

  示例       标准头文件定义

  #include         <string.h>

  #include         <stdio.h>

  string.h和stdio.h是标准头文件,按环境变量include指定的目录顺序搜索string.h和stdio.h。

  示例       用户自定义文件

  本例以S3CEV40开发板整个系统各个模块的测试程序的主文件main.c为例,详细介绍如何利用用户自定义头文件进行系统资源管理。

  File:        main.c

  Desc       :      c main entry

  /--include files--/

  #include”44bilb.h”

  #include”44b.h”

  #include”rtc.h”

  #include”../LCD_Test/bmp.h”

  ……

  ……

  Main.c中的44b.h和44bilb.h等头文件是S3CEV40开发板测试程序的主文件main.h中用户自定义头文件。这些头文件定义了44BOX芯片及其外围接口的硬件资源。嵌入式SoC芯片已成为高性能嵌入式系统的核心,因此嵌入式软件开发时涉及片内资源较多,为了更好地管理这些资源,利用用户头文件对系统进行定义,可大大提高编程效率,并增加程序的可读性,这是嵌入式软件开发的第一步。

  “44bilb.h”对程序开发中的函数进行了声明,并用宏定义对一些常用的表达式或常量进行了预定义。

  “44bilb.h”内容如下所示:

  File:          44BLIB.H

  Desc:         Samsung 44BOX CPU function declare and common define




热门招聘
相关主题

官方公众号

智造工程师