2024年7月27日嵌入式学习

1.标识符的作用域

作用域分为局部作用域和全局作用域;

局部作用域是指在{   }内的作用域,标识符和定义的变量存储在栈区;

全局作用域是指没有在{    }内的作用域,标识符和定义的变量存储在静态区(全局区);

一般在全局变量的标识符前加g_,如果全局变量未被初始化,则会位清零;

所有的函数名都在全局作用域;

2.标识符的四个规则

(1)标识符必须先定义再使用;

(2)在同一作用域不能定义同名标识符;

(3)在没有包含关系的作用域中定义同名的标识符互不影响;

(4)在两个或两个具有包含关系的不同作用域中定义的同名标识符,外层标识符在内层不可见;

3.变量的生存期

分为静态生存期和动态生成期;

静态生存期:从程序开始到程序结束,如:全局变量和局部变量;

动态生存期:

  1 autu变量 

函数中的局部变量,如果不专门声明为static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中。函数中的形参和在函数中定义的变量(包括在复合语句中

2static变量

有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。通过下面简单的例子可以了解它的特点。

3register变量

一般情况下,变量(包括静态存储方式和动态存储方式)的值是存放在内存中的。当程序中用到哪一个变量的值时,由控制器发出指令将内存中该变量的值送到运算器中经过运算器进行运算,如果需要存数,再从运算器将数据送到内存存放,

4用extern定义外部变量

外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。编译时将外部变量分配在静态存储区。
有时需要用extern来声明外部变量,以扩展外部变量的作用域。

5用static声明外部变量

外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。编译时将外部变量分配在静态存储区。
有时需要用extern来声明外部变量,以扩展外部变量的作用域。

内部函数

内部函数又称静态函数,因为它是用static声明的。使用内部函数,可以使函数的作用域只局限于所在文件,在不同的文件中有同名的内部函数,互不干扰。这样不同的人可以分别编写不同的函数,而不必担心所用函数是否会与其他文件中函数同名,通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都冠以static 使之局部化,其他文件不能引用。

外部函数

(1)在定义函数时,如果在函数首部的最左端加关键字 extern,则表示此函数是外部函数,可供其他文件调用。

(2)在需要调用此函数的文件中,用extern对函数作声明,表示该函数是在其他文件中定义的外部函数。

宏定义

不带参数宏定义

带参数宏定义

文件包含

条件编译

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值