[求助] .h文件中的函数参数使用自定义类型报错:error: #20

2019-12-27 18:56发布

本帖最后由 Joetu 于 2017-6-11 08:27 编辑

(一) [问题描述]:
(1) 在项目头文件 A.h中声明了一个"enum 类型";  B.h引用了头文件A.h.   在B.h中声明函数,函数使用A.h中声明的类型作为函数参数,MDK中编译出错,错误提示 : ...h(41): error:  #20: identifier "XXXX" is undefined ;  "XXXX"为A.h中声明的类型.
(2) "自定义类型"不仅限于 enum, 如struct 类型也会出现这样的问题.
(3) B.h肯定包含了A.h, paths中也肯定包含了A B 的路径; 在B.c文件里的函数的内部使用A.h中声明的类型没有问题,如在B.c 函数内部定义一个A.h中声明的结构体类型的局部变量,

(二) A.h
error.png (11.44 KB, 下载次数: 0) 下载附件 2017-6-10 17:52 上传

(五) 环境
编译环境: MDK-ARM 5.22
文件类型: UTF-8

恳请大神指导...

(五) 测试的项目文件
includes.h 文件在ucosii->config
F407_UCOSII_TMP.zip (1005.19 KB, 下载次数: 2) 2017-6-11 08:26 上传 点击文件名下载附件

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
Joetu
1楼-- · 2019-12-28 16:13
我在"includes.h" 文件中尝试调整了一下#include "XXXX.h" 的顺序,有时候会出现极其多的的报错,在组织头文件时要注意顺序问题吗
Joetu
2楼-- · 2019-12-28 21:52
jemmy 发表于 2017-6-11 01:41
方便的话,把3个源码文件传上来。

已上传文件,请大神帮忙参考一下
security
3楼-- · 2019-12-28 22:09
Joetu 发表于 2017-6-11 08:31
我在"includes.h" 文件中尝试调整了一下#include "XXXX.h" 的顺序,有时候会出现极其多的的报错,在组织头文 ...

头文件引用有先后顺序的,因为头文件体现的是模块间的依赖关系。
而依赖关系是有序的。

当你把依赖关系理清晰后,你自然就明白了。
Excellence
4楼-- · 2019-12-29 02:41
 精彩回答 2  元偷偷看……
Joetu
5楼-- · 2019-12-29 02:57
感谢各位,头文件体现的是各模块之间的依赖关系,我将代码重新组织一下
Joetu
6楼-- · 2019-12-29 05:26
问题已解决,感谢各位!

一周热门 更多>