内部函数与外部函数
函数本质上是全局的,因为定义一个函数的目的就是要被另外的函数调用。若不加声明的话,一个文件中的函数既可以被本文件中的其他函数调用,也可以被其他文件中的函数调用。
根据函数能否被其他源文件调用分为:内部函数和外部函数。
内部函数static 类型名 函数名(形参表);
如果一个函数只能被本文件中其他函数所调用,它称为内部函数(又称静态函数)。
在定义内部函数时,在函数名和函数类型的前面加static,即:
static 类型名 函数名(形参表);
使用内部函数,可以使函数的作用域只局限于所在文件,使它对外界“屏蔽”,防止不同文件中的函数重名。这样在不同文件中即使有同名的内部函数,也互不干扰。
通常把只能由本文件使用的函数和外部变量放在文件的开头,前面都冠以static使之局部化,其他文件不能引用。这就提高了程序的可靠性。
外部函数(extern)类型名 函数名(形参表);
如果在定义函数时,在函数首部的最左端加关键字extern,则此函数是外部函数,可供其他文件调用。
(extern)类型名 函数名(形参表);//extern省略不写默认为外部函数。
要调用外部函数时需要加关键字extern声明,表示该函数是在其他文件中定义的外部函数,C语言允许省略extern,一般都省写extern。