7.27 宏定义 标识符

局部作用域 :
        在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。

全局作用域:
        不在任何花括号为全局作用域(定义的变量为全局变量)全局变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。

        全局变量能代替函数实现参数传递

        若全局变量未被初始化,系统48bit自动清0(位模式清0);

        四个规则:

1.标识符必须先定义在使用

2.在同一作用域中,不得定义同名标识符

3.没有包含关系的作用域中,定义的同名标识符互不影响

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

静态生存期:与程序运行周期相同 (全局变量和static)

static

1. 将局部变量的动态生存区修饰为静态生存区

2.在全局变量或函数前加static会限制此函数为本函数.c所用

动态生存期:1.函数形式参数,在调用函数时给形参分配存储空间2.自动变量(未加static声明的局部变量3.函数调用时的现场保护和返回地址等。

auto:空间开辟和销毁是自动的

register :寄存器

例:register int i

建议将i放在寄存器中 取地址i(&i)将会引发编译报错(CPU没有地址)

extern 声明某个函数

        若主调函数放被调函数之前,会出现警告,需要对该函数进行声明

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

       头文件中只放声明,不放定义

预处理
(带#号)所有的预处理都是简单的无脑的文本替换

宏定义 不加: 要求宏名必须大写 -E要求编译器只做预处理,不编译

分为:带参宏 不带参宏(只有宏名 没有内容 表明定义过)

带参数的宏定义不是进行简单的字符串替换,还要进行参数替换。其定义的一般形式为:
#define宏名(参数表)字符串
字符串中包含在括号中所指定的参数。

带参宏效率高于函数,但不利于代码复用性

文件包含
所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。C语言提供了#include命令用来实现“文件包含的操作。其一般形式为

尖括号 include文件找

双引号 一般与自己文件所在目录一致

条件编译
注释

#if0

#end if

若不需要 注释掉宏即可

#ifndef 

避免同一个头文件被多次包含

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值