编译器提示错误
在power_off.c文件里面已经定义count_5ms_off为无符号整型变量,在main.c文件里面也包括power_off.h文件进来了,power_off.h和power_off.c文件均添加到工程,但是在main.c文件里面使用count_5ms_off为何提示未定义?main.c文件开始的地方加一行 extern uint count_5ms_off ;
点c只能调用点h里的变量,您现在在调用别的点c里的变量,要加extern做处理 在power_off.h文件中添加变量声明
extern unsigned int count_5ms_off;
然后在main.c文件中添加如下头文件包含
#include "power_off.h" STCAI-32位8051 发表于 2023-3-22 09:32
main.c文件开始的地方加一行 extern uint count_5ms_off ;
点c只能调用点h里的变量,您现在在调用别的点c ...
您说“点c只能调用点h里的变量”,可是main.c文件已经包括.h文件进来了,那其他.c文件里面的函数如果要在main.c文件里面使用,是不是也要在main.c文件开始的地方加函数的声明? 980578873 发表于 2023-3-22 09:53
您说“点c只能调用点h里的变量”,可是main.c文件已经包括.h文件进来了,那其他.c文件里面的函数如果要在 ...
你贴出.h的内容看看 梁工 发表于 2023-3-22 09:59
你贴出.h的内容看看
梁工,如下是.h和.c的代码,帮忙看看是什么问题,谢谢,附件是全部的代码,谢谢。
zhp 发表于 2023-3-22 09:35
在power_off.h文件中添加变量声明
extern unsigned int count_5ms_off;
不应该是在main.c文件里面加extern unsigned int count_5ms_off;吗?谢谢。
你的“power_off.h”没有下面这一句,调用的C文件开头也没有这一句:
extern unsigned int count_5ms_off;
那么,调用的C文件就看不到这个变量已经定义。
zhp 发表于 2023-3-22 09:35
在power_off.h文件中添加变量声明
extern unsigned int count_5ms_off;
在power_off.h文件中添加如下变量声明不就可以了吗?
unsigned int count_5ms_off; 为什么要前面加extern呢?
然后在main.c文件中添加如下头文件包含
#include "power_off.h" 本帖最后由 zhp 于 2023-3-22 12:49 编辑
980578873 发表于 2023-3-22 11:42
在power_off.h文件中添加如下变量声明不就可以了吗?
unsigned int count_5ms_off; 为什么要前面加exte ...
如果不加extern
只要.c文件include这个.h,变量都会被定义一次,
会出现重复定义的错误
除非.h文件只被一个.c文件包含
在.h文件中声明" extern unsigned int count_5ms_off"的好处是
只要.c文件中需要使用这个变量,只需要include这个.h文件就可以了
而不需要每个.c文件中都用extern声明一次
当然,如果你喜欢在.c文件中都用extern声明也没问题,这是个人喜好问题
页:
[1]
2