Как можно объявить пару двумерных массивов и указатель на них в файле заголовка и определить оба в файле cpp

#c #arduino-esp8266 #arduino-c

#c #arduino-esp8266 #arduino-c

Вопрос:

Я объявил 2D-массив и указатель на него в файле заголовка и определил их в файле .cpp следующим образом. мой файл заголовка:

 extern byte  GeneralBitmap[][Heigth];
extern byte (*GeneralBitmap_ptr)[][Heigth];
 

и мой файл cpp:

  byte  GeneralBitmap[Width][Heigth];
 byte (*GeneralBitmap_ptr)[Width][Heigth] = amp;GeneralBitmap;
 

Но компилятор возвращает эту ошибку:

 error: conflicting declaration 'byte (* GeneralBitmap_ptr)[320][4]' byte (*GeneralBitmap_ptr)[Width][Heigth] = amp;GeneralBitmap;
 

Пожалуйста, помогите мне.

Комментарии:

1. Вы забыли включить Width в объявление в заголовке. Также обратите внимание, что массивы хранятся в основном порядке строк , поэтому обычно говорят о [Height][Width] , [Rows][Columns] , [Y][X] и т.д…

2. Спасибо. Измените «внешний байт (* GeneralBitmap_ptr) [] [Высота];» на «внешний байт (* GeneralBitmap_ptr) [Ширина] [Высота];» решить мою проблему. Но я не могу понять, почему это отличается для переменной и указателя.