• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【学习笔记】【C语言】static和extern对函数的作用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.obj中定义的一个函数。将这些相关联的目标文件链接在一起后才能生成可执行文件。

外部函数:如果在当前文件中定义的函数允许其他文件访问、调用,就称为外部函数。C语言规定,不允许有同名的外部函数。
内部函数:如果在当前文件中定义的函数不允许其他文件访问、调用,只能在内部使用,就称为内部函数。C语言规定不同的源文件可以有同名的内部函数,并且互不干扰。

1.static
* 在定义函数时,在函数的最左边加上static可以把该函数声明为内部函数(又叫静态函数),这样该函数就只能在其定义所在的文件中使用。如果在不同的文件中有同名的内部函数,则互不干扰。
* static也可以用来声明一个内部函数
 
2.extern
* 在定义函数时,如果在函数的最左边加上关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。
* 在一个文件中要调用其他文件中的外部函数,则需要在当前文件中用extern声明该外部函数,然后就可以使用,这里的extern也可以省略。

3.代码

main.c文件

 1 /*
 2  外部函数:定义的函数能被本文件和其他文件访问
 3  1> 默认情况下所有函数都是外部函数
 4  2> 不允许有同名的外部函数
 5  
 6  内部函数:定义的函数只能被本文件访问,其他文件不能访问
 7  1> 允许不同文件中有同名的内部函数
 8  
 9  static对函数的作用:
10  1> 定义一个内部函数
11  2> 声明一个内部函数
12  
13  extern对函数的作用:
14  1> 完整地定义一个外部函数
15  2> 完整地声明一个外部函数
16  (extern可以省略,默认情况下声明和定义的函数都是外部函数)
17  */
18 
19 
20 // 声明一个test函数
21 // 完整地声明一个外部函数
22 // extern可以省略
23 //extern void test();
24 void test();
25 
26 //void test2();
27 
28 int main()
29 {
30     test();
31     
32     //test2();
33     return 0;
34 }
35 
36 //void test()
37 //{
38 //    
39 //}
40 static void test2()
41 {
42     
43 }

one.c文件

 1 #include <stdio.h>
 2 
 3 // 声明一个内部函数
 4 static void test2();
 5 
 6 // 完整地定义一个外部函数
 7 /*
 8 extern void test()
 9 {
10     printf("调用了test函数\n");
11 }*/
12 // 默认情况下,所有的函数都是外部函数,所以可以省略extern
13 void test()
14 {
15     printf("调用了test函数\n");
16     
17     test2();
18 }
19 
20 
21 // 定义一个内部函数
22 static void test2()
23 {
24     printf("调用了test2函数\n");
25 }

 

 
 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++Primer5th第13章拷贝控制发布时间:2022-07-14
下一篇:
静态链表-C语言实现发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap