标题: 调了一个晚上,程序卡在这里 [打印本页]

作者: shenqiwei    时间: 2024-1-24 03:31
标题: 调了一个晚上,程序卡在这里
不知道,什么原因。说我table,没定义

1.png (23.02 KB, 下载次数: 69)

1.png

2.png (9.17 KB, 下载次数: 72)

2.png

3.png (21.16 KB, 下载次数: 57)

3.png

4.png (8.78 KB, 下载次数: 55)

4.png

5.png (33.55 KB, 下载次数: 67)

5.png

6.png (12.97 KB, 下载次数: 76)

6.png

作者: IdeaMing    时间: 2024-1-24 10:10
在display.h里面加上 unsigned char code table[16];    注意分号,在头文件中声明在display.c文件中有table的定义
作者: lkc8210    时间: 2024-1-24 10:23
函数内有while(1)是啥写法?
Display.h里要加
extern unsigned char code table[16];
作者: zyftank    时间: 2024-1-24 10:27
在引用table的文件里加上extern,把变量引用过来。
作者: liixaofei5    时间: 2024-1-24 10:30
interrupt.c中table没定义,table在display.c 中定义,只能在display中用,其他地方用需要用extern引用过来,在interrupt.c中添加extern unsigned char code table[16];
作者: yzw846562238    时间: 2024-1-24 10:40
在DISPLAY.H中添加 extern unsigned char code table[16];
作者: Graves    时间: 2024-1-24 10:48
因为你在中断中用了table,但是interrupt.c中没有找到table,要在DISPALY.H声明一下table
作者: lxj1245481730    时间: 2024-1-24 11:12
应该是table在display.c中定义,但是没有在共同引用的头文件中声明,在共同引用的头文件中加extern unsigned char code table[];试试
作者: 飞云居士    时间: 2024-1-24 11:12
把tabel的定义放在display。h文件里
作者: 单片机研究协会    时间: 2024-1-24 11:54
if(aa=40) 这里少了一个 = ,应该是 if(aa == 40)
作者: Hephaestus    时间: 2024-1-24 12:34
IdeaMing 发表于 2024-1-24 10:10
在display.h里面加上 unsigned char code table[16];    注意分号,在头文件中声明在display.c文件中有tabl ...

不准在h文件里面定义变量,包括数组!如果你这么做,每个引用h文件的c文件都有这个数组定义,全乱套了。

变量只能在c文件里面定义,h文件只能声明变量。
作者: man1234567    时间: 2024-1-24 14:43
单片机研究协会 发表于 2024-1-24 11:54
if(aa=40) 这里少了一个 = ,应该是 if(aa == 40)

此为正解,可以一试。
作者: shenqiwei    时间: 2024-1-24 22:16
lxj1245481730 发表于 2024-1-24 11:12
应该是table在display.c中定义,但是没有在共同引用的头文件中声明,在共同引用的头文件中加extern unsigne ...

对的,H文件里不能定义,只能声明.
作者: shenqiwei    时间: 2024-1-24 22:23
man1234567 发表于 2024-1-24 14:43
此为正解,可以一试。

多谢你
作者: shenqiwei    时间: 2024-1-24 22:24
Hephaestus 发表于 2024-1-24 12:34
不准在h文件里面定义变量,包括数组!如果你这么做,每个引用h文件的c文件都有这个数组定义,全乱套了。
...

厉害啊!受教了




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