реклама на сайте
подробности

 
 
> возврат ошибки функцией, как выполнить
tazik
сообщение Jun 19 2009, 13:38
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



К примеру, есть функция чтения каких-то данных по какому-то адресу (чтение ИС памяти)

uint8_t MemReadByte(uint32_t Addres)

Внутри функции существует контроль ошибки чтения (по таймауту). Как передать код ошибки из функции "наружу"?
Ведь возвращаемые значения могут быть от 0х00 до 0хFF и для кода ошибки места не остается.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
rezident
сообщение Jun 19 2009, 13:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Я обычно использую такой вид функций
Код
uint8_t foo(uint8_t cmd, void *arg)

т.е. в параметрах функции задается код команды и указатель на список аргументов. Список аргументов может состоять из одной переменной, массива переменных или структуры. Возвращает функция код ошибки выполнения команды. А если нужно возвращать какие-то данные, то они опять с помощью указателя на переменную, массив или структуру данных возвращаются. Указатель совсем не обязательно типа void. Тип указателя может быть вполне определенным. Такой способ передачи параметров более универсальный и схож с тем, что использует сам компилятор (IAR в моем случае).
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jun 19 2009, 13:51
Сообщение #3


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Код
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
}
Go to the top of the page
 
+Quote Post
tazik
сообщение Jun 19 2009, 14:10
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Спасибо, пойду применять )
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 08:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016