如何在头文件中声明extern 2d-array?
我们在LCD.c中有这个声明:
unsigned char LCD[8][64] = {((unsigned char) 0)};
在LCD.h中我们希望有类似的东西:
extern unsigned char LCD[][];
我们收到此错误:
Error[Pe098]: an array may not have elements of this type
您至少需要包含2-Darrays的最右列大小。 您可以这样声明:
extern unsigned char LCD[][64];
否则,编译器将无法计算第一行之后的偏移量。
在C中,数组不包含有关其每个维度的大小的信息。 因此,编译器需要知道除第一个维度之外的每个维度有多大。 因此,要纠正这种情况,请执行以下操作:
lcd.h用于:
#define MINOR 64 extern unsigned char LCD[][MINOR];
LCD.c:
unsigned char LCD[8][MINOR] = {((unsigned char)0)};
(编辑:抱歉,我在开始时弄乱了一些东西,现在修好了。)
尝试指定数组的尺寸。 在C中,对于多维数组,只能保留一个维度。
像这样:
extern unsigned char LCD[][64];
对于多维数组,必须指定除第一个维之外的所有维。 所以…
extern unsigned char LCD[][64];
应该这样做。
添加到头文件的声明如下:
extern unsigned char LCD[8][64];
如果你没有定义二维的大小,LCDarrays的sizeof将被拒绝!
sizeof refused : extern unsigned char LCD[][64]; sizeof accepted : extern unsigned char LCD[8][64];
这取决于你想要的!