c语言中用户标识符的作用域跟存储类(4)
c语言中用户标识符的作用域和存储类(4)
4 函数的存储分类
所有函数都是外部的,因为不允许在函数内部定义另一个函数。但定义函数时,可以使用extern或static说明符。
4.1 用extern说明函数
当定义一个函数时,若在函数返回值的类型前加上说明符extern,则称此函数为“外部”函数。extern说明可以省略,一般的函数都隐含说明为extern。所以,我们之前所定义的函数都属于外部函数。
外部函数的特征是:可以被其他编译单位中的函数调用。通常,当函数调用语句与被调用函数不在同一编译单位,且函数的返回值为非整型时,应该在调用语句所在函数的说明部分用extern对所调用的函数进行函数说明。
4.2 用static说明函数
当定义一个函数时,若在函数返回值的类型前加上说明符static,则称此函数为“静态”函数。
静态函数的特征是:只限于本编译单位的其他函数调用它,而不允许其他编译单位的函数对它进行调用。从这个意义上说,静态函数又可称作“内部函数”(内部于本文件的函数)。使用静态函数可以避免不同编译单位因函数同名而引起混乱。若强行调用静态函数,将会产生错误信息。