У меня есть четыре массива данных (3072 байта каждый). Я хочу указать на один из этих массивов, поэтому, если функции передан указатель на эти массивы, она может манипулировать ими, и указатели могут быть s
Итак, сначала я подумал о указателях на указатели:
uint16_t *buffer0_level[BUFF_WORDS] FAR;
uint16_t *buffer0_mask[BUFF_WORDS] FAR;
uint16_t *buffer1_level[BUFF_WORDS] FAR;
uint16_t *buffer1_mask[BUFF_WORDS] FAR;
uint16_t **draw_buffer_level;
uint16_t **draw_buffer_mask;
uint16_t **disp_buffer_level;
uint16_t **disp_buffer_mask;
А затем, чтобы установить указатели, я бы сделал что-то вроде этого:
draw_buffer_level = buffer0_level;
draw_buffer_mask = buffer0_mask;
disp_buffer_level = buffer1_level;
disp_buffer_mask = buffer1_mask;
Это кажетсяwork.
Однако затем я хочу передать указатель на функцию fill_buffer, которая заполняет один из массивов некоторым словом данных.
Определение:
void fill_buffer(uint16_t *buff, uint16_t word)
Но при вызове так:
fill_buffer(draw_buffer_level, 0x0000);
fill_buffer(draw_buffer_mask, 0x0000);
fill_buffer(disp_buffer_level, 0x0000);
fill_buffer(disp_buffer_mask, 0x0000);
GCC жалуется:
gfx.c:46: warning: passing argument 1 of 'fill_buffer' from incompatible pointer type
gfx.c:47: warning: passing argument 1 of 'fill_buffer' from incompatible pointer type
gfx.c:48: warning: passing argument 1 of 'fill_buffer' from incompatible pointer type
gfx.c:49: warning: passing argument 1 of 'fill_buffer' from incompatible pointer type
Я уверен, что это просто глупая ошибка, но что это?Я все еще новичок в программировании на C.