关于头文件包含问题

navyliu1986 2014-06-11 10:05:02
我有四个文件,a.c a.h b.c b.h,
b.h里定义了一个结构体 test,a.h包含了b.h,
在a.c里面定义了一个函数 void hello(test inA);
在a.h里声明了这个函数void hello(test inA),此时总是报错test结构体未定义,但在a.c中又没问题。

大家来出现过这种问题没?我是一个大项目里,处理这四个文件还有其他文件,我分析了下好像又没什么问题,请各位大牛指点可能问题出在哪里?谢谢啦!
...全文
164 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdcxy2009 2014-06-13
  • 打赏
  • 举报
回复
这种问题我以前好象遇到过,有个可能是因为a.h找不到b.h的路径,导致b.h并没有真正加载到a.h中,当然就没有定义了。 楼主检查一下a.h中引用b.h时的路径设置, 另外在编译时仔细一点可以看到中间码时是否把b.h包含进来了
xuzhouweihao 2014-06-12
  • 打赏
  • 举报
回复
a.c 有没有包含a.h? 这个确实不好
luotuo44 2014-06-12
  • 打赏
  • 举报
回复
目测是楼主的test结构体在定义的时候忘了加分号
赵4老师 2014-06-11
  • 打赏
  • 举报
回复
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E 理解讨论之前请先学会如何观察
stormier 2014-06-11
  • 打赏
  • 举报
回复
结构体前面没有加struct
shenchenman 2014-06-11
  • 打赏
  • 举报
回复
没有遇到过。名字写对了么
勒特一体狗 2014-06-11
  • 打赏
  • 举报
回复
报错是指编译通不过还是提示有问题
707wk 2014-06-11
  • 打赏
  • 举报
回复
引用 7 楼 cau_eric 的回复:
[quote=引用 楼主 navyliu1986 的回复:] 我有四个文件,a.c a.h b.c b.h, b.h里定义了一个结构体 test,a.h包含了b.h, 在a.c里面定义了一个函数 void hello(test inA); 在a.h里声明了这个函数void hello(test inA),此时总是报错test结构体未定义,但在a.c中又没问题。 大家来出现过这种问题没?我是一个大项目里,处理这四个文件还有其他文件,我分析了下好像又没什么问题,请各位大牛指点可能问题出在哪里?谢谢啦!
楼主把代码发上来看看?[/quote] +1
小新110 2014-06-11
  • 打赏
  • 举报
回复
引用 楼主 navyliu1986 的回复:
我有四个文件,a.c a.h b.c b.h, b.h里定义了一个结构体 test,a.h包含了b.h, 在a.c里面定义了一个函数 void hello(test inA); 在a.h里声明了这个函数void hello(test inA),此时总是报错test结构体未定义,但在a.c中又没问题。 大家来出现过这种问题没?我是一个大项目里,处理这四个文件还有其他文件,我分析了下好像又没什么问题,请各位大牛指点可能问题出在哪里?谢谢啦!
楼主把代码发上来看看?
劣单 2014-06-11
  • 打赏
  • 举报
回复
直接看一下代码比这里瞎猜要好得多
buyong 2014-06-11
  • 打赏
  • 举报
回复
在a.h里,要确保先写了结构体定义,再写函数定义

69,378

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧