标题: Keil5编译C语言程序时.h配置的结构体在.C文件 有引用了未解析的外部的警告 [打印本页]

作者: 64639F    时间: 2021-8-31 14:46
标题: Keil5编译C语言程序时.h配置的结构体在.C文件 有引用了未解析的外部的警告
typedef struct
{
        u8 sec_m;  
        u8 sec;   
  u8 minute;
  u8 hour;  
}time_InitTypeDef;
//.h配置的结构体
void Timer_init(void)
{
  Timing_unit.sec_m=0;
  Timing_unit.sec=0;
  Timing_unit.minute=0;
  Timing_unit.hour=0;
}
//.c文件引用的函数
为什么会警告“有引用了未解析的外部的警告”
要怎么解决???

51hei图片20210831144152.png (30.97 KB, 下载次数: 80)

51hei图片20210831144152.png

51hei图片20210831144220.png (21.9 KB, 下载次数: 135)

51hei图片20210831144220.png

51hei图片20210831144223.png (13.59 KB, 下载次数: 92)

51hei图片20210831144223.png

作者: datouyuan    时间: 2021-8-31 16:11
项目中一个变量可以在多处带extern声明,但必须有并且只有一处不能带extern声明。
解决办法:
timer.h的第10行复制到下图的第2行,并删除extern。
作者: 黄youhui    时间: 2021-8-31 16:54
没有定义Timing_unit

51hei截图20210831165327.png (25.82 KB, 下载次数: 75)

51hei截图20210831165327.png

作者: 188610329    时间: 2021-8-31 18:10
你既然 include time.h 了。 为什么u8 count = 0;不放在 time.h里,反而用extern 去调用呢?另外,被include 的文件,最好不要 extern   不然很容易出现重复调用错误。你只要主程序include 这些头文件,这些头文件里声明的变量就自动包含近来,不容易出错。然后你看 那个timeing_unit 前面的 typedef, 不是这样用的,你真要重定义也不能用 extern.




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1