您的位置 首页 产品

51单片机总结–C语言之预处理

编译预处理器是C语言编译器的一个重要组成部分。很好的利用C语言的预处理命令可以增强代码的可读性,灵活性,和易于修改等特点,便于程序的结构化。预处理命令由符号“#”开

  编译预处理器是C言语编译器的一个重要组成部分。很好的运用C言语的预处理指令能够增强代码的可读性,灵活性,和易于修正等特色,便于程序的结构化。

  预处理指令由符号“#”最初,包含宏界说,文件包含,条件处理三个部分。

  其间条件编译我还没有用过,所以就具体介绍一下宏界说和文件包含。

  一.宏界说

  宏界说指令为#define,它的效果便是实现用一个简略易读的字符串来替代

  另一个字符串。添加程序的可读性,和保护性。

  宏界说分为不带参数的宏界说,和带参数的宏界说。

  不带参的宏界说:

  一般格局:#define 标识符 常量表达式

  例如用一个字符替代一个常数

  #define PI 3.1415926

  当程序中呈现3.1415926这个常数的时分就能够用PI这个字符替代,假如想修正这个常数只需要修正这个宏界说中的常数,就能够到达修正整个文件中这个常数的意图。这便是添加保护性的表现。

  运用留意:

  运用中#define 和标识符之间有必要留有空格,标识符和常量表达式之间也有必要有空格。

  带参数的宏界说:

  带参数的宏界说和不带参数的宏界说之间的差异在于,带参数的宏界说不只是进行字符串的替换,并且还要进行参数的替换。留意是参数替换。

  格局:

  #define 宏符号名(参数表) 表达式

  如:

  #define MIN(x,y) (((x)<(y))?(x):(y))

  1;留意为了安全起见后边表达式中的参数运用“()”括起来,避免程序中

  运用该宏时因为优先级问题引起的过错。

  如:#define S(r) PI*r*r

  假如程序中用到m=S(a+b)

  则替换后等同于 m="PI"*a+b*a+b

  明显与咱们的意图不同。

  2.宏界说指令#define 要求一行内写完,假如一行内完不成能够用“\”表明下一行持续。

  二.文件包含

  头文件的意图便是在库函数与运用该库函数的程序之间树立接口。

  头文件的界说格局。

  以头文件led.h为例。

  #ifndef __LED_H__

  #define __LED_H__

  ………内容………

  #endif

  运用尖括号和双引号的差异:

  运用尖括号的话,编译时会先在体系include目录里查找,假如找不到才会在源代码地点目录查找;运用双引号则相反,会先在源代码目录里查找。这就意味着,当体系里(如/usr/include/里)有一个叫做at89c51.h的头文件,而你的源代码目录里也有一个你自己写的at89c51.h头文件,那么运用尖括号时用的便是体系里的;而运用双引号的话则会运用你自己写的那个。

  所以主张: 运用体系里供给的头文件时运用尖括号

  运用自己编写的头文件时运用双引号

  典型的头文件内容包含:

  1:阐明文字。用于注释该头文件的主要内容,函数的效果,函数的接口等

  2; #define 指令命名的宏界说

  3:类型界说。包含结构体,共用体,数组等类型界说

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/325031.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部