我们在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
答案 0 :(得分:17)
您至少需要包含二维数组的最右列大小。您可以这样声明:
extern unsigned char LCD[][64];
否则编译器将无法计算第一行之后的偏移量。
答案 1 :(得分:2)
在C中,数组不包含有关其每个维度的大小的信息。因此,编译器需要知道除第一个维度之外的每个维度有多大。因此,要纠正这种情况,请执行以下操作:
lcd.h用于:
#define MINOR 64
extern unsigned char LCD[][MINOR];
LCD.c:
unsigned char LCD[8][MINOR] = {((unsigned char)0)};
(编辑:抱歉,我在开始时弄乱了一些东西,现在修好了。)
答案 2 :(得分:2)
尝试指定数组的尺寸。在C中,对于多维数组,只能指定一个维度。
像这样:
extern unsigned char LCD[][64];
答案 3 :(得分:1)
对于多维数组,必须指定除第一个维之外的所有维。所以......
extern unsigned char LCD[][64];
应该这样做。
答案 4 :(得分:0)
在头文件中添加如下声明:
extern unsigned char LCD[8][64];
答案 5 :(得分:0)
LCD阵列的尺寸会被拒绝!
sizeof refused : extern unsigned char LCD[][64];
sizeof accepted : extern unsigned char LCD[8][64];
它取决于你想要的东西!
答案 6 :(得分:0)
#include 使用命名空间标准;
int main(){
int n;
cout<<"Enter The Number"<<endl;
cin>>n;
int m;
cout<<"Enter The Second Number"<<endl;
cin>>m;
int array[n][m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin<<array[i][j]<<endl;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout<<array[i][j]<<" ";
}
cout<<endl;
}
返回0; }