如何在头文件中声明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]; 

这取决于你想要的!