#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) [Ширина] [Высота];» решить мою проблему. Но я не могу понять, почему это отличается для переменной и указателя.