OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5122|回复: 6

各个模块分开写,调用里面的定义的函数就一定要用extern才不会出warning?

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-12-15
在线时间
0 小时
发表于 2013-12-17 11:03:35 | 显示全部楼层 |阅读模式
我看到原子哥的例程中都是各个部分分模块写,为什么在main中调用的时候都不用加extern?我的自己编的时候就得加?这是头文件里面的设定还是什么原因,如C语言的问题?请各位解答,本人菜鸟一个。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2013-12-17 11:08:31 | 显示全部楼层
头文件里面不能直接定义变量,只能用extern,置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义
回复 支持 反对

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2013-12-17 11:32:52 | 显示全部楼层
回复【楼主位】普陀听禅:
---------------------------------
因为函数声明的时候虽然没加extern,但默认是extern的
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-12-15
在线时间
0 小时
 楼主| 发表于 2013-12-17 12:13:30 | 显示全部楼层
回复【3楼】一般BDN:
------------------------------
不懂?为什么默认是extern?这个是keil4中设定的还是怎么?谢谢!
回复 支持 反对

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2013-12-17 12:25:16 | 显示全部楼层
回复【4楼】普陀听禅:
---------------------------------main文件里所包含的头文件里已经声明了要调用的函数,默认是extern是C语言规定的吧,不需要纠结吧
回复 支持 反对

使用道具 举报

17

主题

93

帖子

0

精华

初级会员

Rank: 2

积分
181
金钱
181
注册时间
2013-10-9
在线时间
0 小时
发表于 2013-12-17 14:59:51 | 显示全部楼层
回复【5楼】as564335sa:
---------------------------------
最好extern,以为着用查看程序比较方便!
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-12-17 20:53:03 | 显示全部楼层
1)定义函数、变量只能放在.C的文件里。
2)如果外界需要调用该函数、变量,有两种方法:
①在.H里声明。(其他模块都能用)
②其他函数的.C里用extern。(只是该模块能使用)
不建议第②种方法,因为这样不方便管理,调用的多了你的程序会很乱。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表