980578873 发表于 2023-3-22 14:16:55

zhp 发表于 2023-3-22 12:41
如果不加extern
只要.c文件include这个.h,变量都会被定义一次,
会出现重复定义的错误


基于好奇心,我再想追问一下,在使用同时多个.c文件里面include<stc8h.h>,stc8h.h文件里面也没见使用extern,但是编译器却没有报重复定义的错误,这是什么原因?

zhp 发表于 2023-3-22 14:30:20

980578873 发表于 2023-3-22 14:16
基于好奇心,我再想追问一下,在使用同时多个.c文件里面include,stc8h.h文件里面也没见使用extern,但是 ...

stc8h.h文件里面并没有定义变量

梁工 发表于 2023-3-22 14:30:56

980578873 发表于 2023-3-22 14:16
基于好奇心,我再想追问一下,在使用同时多个.c文件里面include,stc8h.h文件里面也没见使用extern,但是 ...

stc8h.h里面定义的是寄存器和宏定义,不是变量,有防止重复包含的语句,所以多个调用是不会警告的,如果你将防止重复包含的语句去掉,马上就会有错误提示。

梁工 发表于 2023-3-22 14:33:01

980578873 发表于 2023-3-22 11:42
在power_off.h文件中添加如下变量声明不就可以了吗?
unsigned int count_5ms_off;   为什么要前面加exte ...

没有外部声明,要么提示你重复定义,要么提示你未定义。
还是建议你仔细看一下C语言,这是基础中的基础哦。

980578873 发表于 2023-3-22 16:19:42

梁工 发表于 2023-3-22 14:33
没有外部声明,要么提示你重复定义,要么提示你未定义。
还是建议你仔细看一下C语言,这是基础中的基础哦 ...

好的,

980578873 发表于 2023-3-22 16:20:26

zhp 发表于 2023-3-22 14:30
stc8h.h文件里面并没有定义变量

好的,谢谢

980578873 发表于 2023-3-22 16:41:26

zhp 发表于 2023-3-22 14:30
stc8h.h文件里面并没有定义变量

我发有个单片机死机的帖子,麻烦帮忙去看看,感谢。
页: 1 [2]
查看完整版本: 编译器提示错误