先来理解2个概念:
- 外部函数:如果在当前文件中定义的函数允许其他文件访问、调用,就称为外部函数。
C语言规定,不允许有同名的外部函数。
- 内部函数:如果在当前文件中定义的函数不允许其他文件访问、调用,只能在内部使用,就称为内部函数。
C语言规定不同的源文件可以有同名的内部函数,并且互不干扰。
1.static
-
在定义函数时,在函数的最左边加上static可以把该函数声明为内部函数(又叫静态函数),这样该函数就只能在其定义所在的文件中使用。
如果在不同的文件中有同名的内部函数,则互不干扰。
-
static也可以用来声明一个内部函数
2.extern
-
在定义函数时,如果在函数的最左边加上关键字extern,则表示此函数是外部函数,可供其他文件调用。
C语言规定,如果在定义函数时省略extern,则隐含为外部函数。
-
在一个文件中要调用其他文件中的外部函数,则需要在当前文件中用extern声明该外部函数,然后就可以使用,这里的extern也可以省略。
注意:extern
如果a.c
和b.c
文件中想要共用一个变量int aa;
那么此时可能会想在一个头文件中b.h
中声明一个变量,但是注意a.c
和b.c
两个文件都调用b.h
,这样做不正确。
应当是在一个c文件中声明一个,在其他文件中调用时用extern进行声明
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)