作用域
作用域用来控制标识符的有效范围。
常规
单文件的作用域有如下几种
文件作用域(全文件,在代码块之外声明,注意#include延伸了文件)
函数作用域(只适用于语句标签,配合goto,所以语句标签在函数中必须唯一)
代码块作用域(花括号范围)
原型作用域(方法原型定义时,参数不能相同)
就近覆盖
链接属性
由于结构需要,一个程序的源文件会被拆分编译。有些标识符可能在多个文件中出现重复,那么是多个文件共享一个实体还是每个文件独立拥有实体?
这时候需要引入连接属性:
external: 表示全是同一个实体
internal: 表示相同的文件中的是一个实体,不同的文件中的是不同的
none:表示全是不同的实体;函数形式参数和代码块内声明的变量在缺省情况下具有none链接属性
static
如果某个缺省声明在正常情况下具有external链接属性,static可以让他变为internal
extern
extern 为一个标识符指定external链接属性。
标识符在源文件中第一次声明时使用extern才有效
Last updated
Was this helpful?