关于标识符的属性研究
链接属性
对于一个标识符而言,就链接角度分析,有external、internal、none,三种属性,如果整个工程处于一个文件,也就无所谓external了,在不同文件中需要相互引用时,会体现出external和internal的属性。None一般出现在函数中,比如定义的一个变量,因为其作用域仅限于函数,所以是作为独立个体,就比如在每个函数中使用for循环时,都可以定义 int i整个变量标示符。
一般 全局变量标示符,函数名标示符默认是external的属性,
那么 c中会有这个关键字与链接属性相关
Static、extern、
1、static 对于一个external属性的标识符,进行类似于c++类中的私有化,即其他文件不可以对其对象引用。这里需要注意的是,static的链接属性作用,只能对具有external属性的标识符作用,比如全局量,函数,而对none的链接属性,是不可使用的,因为static还具有存储类型的属性。
2、extern 只是对对象声明,没有定义的作用,在一个文件中,extern修饰一个标识符,只能说明,这个修饰符具有external的链接属性,其定义可能是在其他文件中
存储类型
一般存储类型是说明,变量存储的位置,比如cpu寄存器、.data段、堆栈区等,
相关的关键字有static、register、auto等
static的介绍有篇blog讲的比较好
C++中的static关键字:
http://blog.csdn.net/hackbuteer1/article/details/7487694
static用法小结:
http://blog.csdn.net/Kendiv/article/details/675941
register是告知编译器,存储到cpu寄存器
auto 默认堆栈区,比如一个函数中的变量