C 命名冲突和static 修饰符
一、命名冲突
ANSI C 定义了C标准的库函数,列出了经常用到而可能会引发命名冲突的所有函数,这样,我们就容易避免与库文件中外部对象名称发生冲突。如果一个库函数需要调用另一个未在ANSI C 标准中列出的库函数,那么他应该以“隐藏名称”来调用后者。
二、static 修饰符
static 是一个能减少命名冲突的有用工具。
例如
static int a;
其含义与下面的语句相同
int a;
只不过,a的作用域限制在一个源文件内,对于其他的源文件,a是不可见的。因此,如果若干函数需要共享一组 外部对象,可以将这些函数放到一个源文件中,把他们需要用到的对象也都放在同一个源文件中以static修饰符声明。
注意:
此处用到的情况是它用于函数定义或者全局变量的时候的用法;static 关键字用于修改标识符的链接属性, 从external该为internal,但标识符的存储类型和作用域不受影响。这种方式声明的函数或者变量只能在声明它的源 文件中访问。
当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,从自动变量修改为静态变量, 但它们的链接属性和作用域不受影响。用这种方式声明的变量在程序执行前创建了,并在程序整个执行期间一直 存在,而不是每次在代码块开始执行的时候创建,在代码块执行完毕后销毁。