Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: возврат ошибки функцией
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
tazik
К примеру, есть функция чтения каких-то данных по какому-то адресу (чтение ИС памяти)

uint8_t MemReadByte(uint32_t Addres)

Внутри функции существует контроль ошибки чтения (по таймауту). Как передать код ошибки из функции "наружу"?
Ведь возвращаемые значения могут быть от 0х00 до 0хFF и для кода ошибки места не остается.
rezident
Я обычно использую такой вид функций
Код
uint8_t foo(uint8_t cmd, void *arg)

т.е. в параметрах функции задается код команды и указатель на список аргументов. Список аргументов может состоять из одной переменной, массива переменных или структуры. Возвращает функция код ошибки выполнения команды. А если нужно возвращать какие-то данные, то они опять с помощью указателя на переменную, массив или структуру данных возвращаются. Указатель совсем не обязательно типа void. Тип указателя может быть вполне определенным. Такой способ передачи параметров более универсальный и схож с тем, что использует сам компилятор (IAR в моем случае).
SysRq
Код
uint8_t MemReadByte(uint8_t *Value, const uint32_t Addres)
{
uint8_t no_error_occured = TRUE;

//..

return no_error_occured;
}

//...

uint8_t data;
if(!MemReadByte(&data, 0xDEADBEEF))
{
// error while MemReadByte
}
tazik
Спасибо, пойду применять )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.