C语言头文件找不到变量类型

AC_YE 2020-09-17 12:33:06
为什么在主函数里写了一个typedef int PON,然后再写一个头文件,这个头文件中PON类型用不了?
...全文
424 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2020-09-18
  • 打赏
  • 举报
回复
引用 8 楼 肥牛肉^*^ 的回复:
那我shishi头文件里如果要用printf就要引用stdio.h,但是我有的时候没有加stdio.h也可以用printf

你的贴图里没有print啊,如果用到stdio.h,include进来也没问题,stdio.h里有防止重复include的宏定义,所以多次include也没问题
你不加stdio.h也能用printf,可能是因为其它头文件里inlcude了它,你inlcude其它的头文件,就会把它也一起include了
AC_YE 2020-09-17
  • 打赏
  • 举报
回复
引用 1 楼 qybao的回复:
把typedef int PON; 放到 shishi.h文件里去
typedef int PON;放在main.c里,shishi.h是看不到PON的,所以不知道PON是什么类型。
放到 shishi.h 文件的话shishi.h就知道PON是什么了,而main.c里 #include "shishi.h"后main也会知道这一切信息的
写typedef int PON然后引用头文件shishi.h这样shishi.h里面为什么检测不到
qybao 2020-09-17
  • 打赏
  • 举报
回复
把typedef int PON; 放到 shishi.h文件里去
typedef int PON;放在main.c里,shishi.h是看不到PON的,所以不知道PON是什么类型。
放到 shishi.h 文件的话shishi.h就知道PON是什么了,而main.c里 #include "shishi.h"后main也会知道这一切信息的
AC_YE 2020-09-17
  • 打赏
  • 举报
回复
引用 7 楼 qybao的回复:
[quote=引用 5 楼 肥牛肉^*^ 的回复:]就是把typedef int PON放到头文件里,还要把include《stdio.h》也放到shishi.h头文件里面吗

1L回答不是说了吗,把typedef int PON放到shishi.h头文件里面就可以了。
include《stdio.h》不用放到shishi.h头文件里,因为你的f函数没用到stdio.h的东西,所以不需要它。[/quote] 那我shishi头文件里如果要用printf就要引用stdio.h,但是我有的时候没有加stdio.h也可以用printf
qybao 2020-09-17
  • 打赏
  • 举报
回复
引用 5 楼 肥牛肉^*^ 的回复:
就是把typedef int PON放到头文件里,还要把include《stdio.h》也放到shishi.h头文件里面吗

1L回答不是说了吗,把typedef int PON放到shishi.h头文件里面就可以了。
include《stdio.h》不用放到shishi.h头文件里,因为你的f函数没用到stdio.h的东西,所以不需要它。
剑文文 2020-09-17
  • 打赏
  • 举报
回复
typedef int PON 和 include《stdio.h》放到shishi.h头文件里面
AC_YE 2020-09-17
  • 打赏
  • 举报
回复
就是把typedef int PON放到头文件里,还要把include《stdio.h》也放到shishi.h头文件里面吗
自信男孩 2020-09-17
  • 打赏
  • 举报
回复
引用 2 楼 肥牛肉^*^ 的回复:
[quote=引用 1 楼 qybao的回复:]把typedef int PON; 放到 shishi.h文件里去
typedef int PON;放在main.c里,shishi.h是看不到PON的,所以不知道PON是什么类型。
放到 shishi.h 文件的话shishi.h就知道PON是什么了,而main.c里 #include "shishi.h"后main也会知道这一切信息的

写typedef int PON然后引用头文件shishi.h这样shishi.h里面为什么检测不到[/quote]
你放到头文件里之后还要把所在的头文件include到shishi.h文件里。这是头文件里引入头文件。即在shishi.h里还要加一个#include ""这个双引号是定义PON的。
qybao 2020-09-17
  • 打赏
  • 举报
回复
因为你的shishi.h不会去#include “main.c”(一般没有这种做法)。哪个文件有什么信息,别的文件不include它就不会知道该文件的信息。就好像你的朋友有10块钱,你include你的朋友,你才可以看到他的10块钱,否则,他有多少钱你不可能知道。文件也一样,include就相当于把别的文件信息加到当前文件。

69,369

社区成员

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

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