У меня есть массив фиксированного размера (который всегда будет одного размера), содержащий байты.Вот код:
static void foo(uint8_t *arr_ptr);
void main()
{
uint8_t arr[4];
foo(&arr);
}
static void foo(uint8_t *arr_ptr)
{
for(uint8_t i=0; i<4; i++)
{
arr_ptr[i]=1; // Set to one just to make it simpler
}
}
Идея состоит в том, чтобы иметь массив фиксированного размера в качестве буфера и изменять его содержимое каждый раз, когда вызывается foo.Он работает так, как должен, но выдает некоторые предупреждения и информацию, из-за которой я думаю, что что-то указано неправильно.
При static void foo(uint8_t *arr_ptr);
: INFO: Ожидается} 'но аргумент имеет тип' uint8_t () [4] {aka unsigned char (*) [4]} '
В foo(&arr)
: ПРЕДУПРЕЖДЕНИЕ: передача аргумента 1 из' foo 'изнесовместимый тип указателя
Копая немного в некоторых других сообщениях, я видел, что, возможно, может быть решение объявить его как (*arr)[4]
, что может иметь смысл, но применение их заставляет код работатьразные.Я почти уверен, что запутался в этом объявлении указателя и передаче аргумента, поэтому я был бы признателен, если бы кто-то мог помочь мне прояснить эти понятия.