你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

结构体外部变量声明报错

[复制链接]
黑皮男 提问时间:2015-9-13 10:25 /
悬赏10ST金币已解决
本帖最后由 黑皮男 于 2015-9-13 10:47 编辑

最近在整文件系统,但是在头文件中加入外部结构体变量声明如extern FATFS *fs[2]就会提示结构体FATFS没有定义,而放在.C文件中声明外部变量就不会报错FATFS未定义,我用的是IAR7.4

最佳答案

查看完整内容

是不行的,这个是extern用法问题吧,你可以看看官方给的例子,比如TIM_HandleTypeDef htim2; 1.TIM_HandleTypeDef 是在某个xx.h中定义的; 2.定义hitm2时,只需该mm.c文件包含xx.h即可; 3.如果oo.c文件要调用hitm2,其头文件要包含mm.h、xx.h,然后在oo.c开头用extern调用即可。
收藏 1 评论9 发布时间:2015-9-13 10:25

举报

9个回答
hithfy 回答时间:2015-9-13 10:25:39
本帖最后由 hithfy 于 2015-9-16 09:11 编辑
黑皮男 发表于 2015-9-16 08:17
我就是这样做的,但是我的意思是把extern Structurename yourname放到头文件中声明就不行 ...

是不行的,这个是extern用法问题吧,你可以看看官方给的例子,比如TIM_HandleTypeDef htim2;
    1.TIM_HandleTypeDef 是在某个xx.h中定义的;
    2.定义hitm2时,只需该mm.c文件包含xx.h即可;
    3.如果oo.c文件要调用hitm2,其头文件要包含mm.h、xx.h,然后在oo.c开头用extern调用即可。
   
你好我好大家好! 回答时间:2015-9-13 11:05:57
没遇到过这种情况
回答时间:2015-9-13 19:28:02
调用.h的顺序查看一下。在.h中也调用一下FATFS定义的.h文件。
shaoziyang 回答时间:2015-9-13 20:23:55
看看.h文件的引用方式有没有问题。
hithfy 回答时间:2015-9-13 20:30:47
一般自定义的结构体在对应源文件的.h文件中,然后如果有其他.c要调用的话,直接包含这个头文件,并且在该.c文件的开头用extern Structurename yourname;,应该可以解决,试一试哈
anger0925 回答时间:2015-9-14 11:56:58
头文件中加入外部结构体变量声明如extern FATFS *fs[2],也要在这个头文件中添加相应的文件系统头文件
黑皮男 回答时间:2015-9-16 08:17:48
hithfy 发表于 2015-9-13 20:30
一般自定义的结构体在对应源文件的.h文件中,然后如果有其他.c要调用的话,直接包含这个头文件,并且在该.c ...

我就是这样做的,但是我的意思是把extern Structurename yourname放到头文件中声明就不行
黑皮男 回答时间:2015-9-16 09:23:11
hithfy 发表于 2015-9-16 09:09
是不行的,这个是extern用法问题吧,你可以看看官方给的例子,比如TIM_HandleTypeDef htim2;
    1.TIM_H ...

但是普通变量就可以在头文件中声明外部变量
hithfy 回答时间:2015-9-16 11:19:29
黑皮男 发表于 2015-9-16 09:23
但是普通变量就可以在头文件中声明外部变量

申明之后,你的目标源文件调用它没?如果调用了,那该源文件包含这个.h文件没?

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版