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

 
 
> Работа с массивом.
Jenya7
сообщение Mar 24 2016, 06:41
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть два варианта.
Первый
Код
void ParseGeneralParam(uint8_t *data_packet)
{
     data_packet[1] = aaa;
     data_packet[2] = bbb;
     data_packet[3] = ccc;
}

и потом передаем глобальный массив
Код
uint8_t glob_arr[20];
ParseGeneralParam(glob_arr);

Второй - сразу передаем глобальный массив
Код
void ParseGeneralParam(void)
{
    glob_arr[1] = aaa;
    glob_arr[2] = bbb;
    glob_arr[3] = ccc;
}

первый вариант более генерик. не привязан к конкретному массиву поэтому легко переносимый. но с точки зрения скорости - тратит ли первый вариант лишние такты на передачу адреса?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Mar 24 2016, 12:56
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Почему тогда не сделать упакованную структуру из опкода и безымянного union-а структур с наборами данных для разных опкодов? Исходник получится более осмысленный и магических чисел в виде индексов массива в нем не будет.
На плюсах я бы предложил базовый класс с опкодом (generic_command) и отнаследованные от него конкретные команды со своими данными.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Mar 24 2016, 13:20
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Сергей Борщ @ Mar 24 2016, 17:56) *
Почему тогда не сделать упакованную структуру из опкода и безымянного union-а структур с наборами данных для разных опкодов? Исходник получится более осмысленный и магических чисел в виде индексов массива в нем не будет.
На плюсах я бы предложил базовый класс с опкодом (generic_command) и отнаследованные от него конкретные команды со своими данными.

это не от меня зависит. я работаю с модулем и его API принимают массив uint8_t в качестве аргумента.

Сообщение отредактировал Jenya7 - Mar 24 2016, 13:21
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 14:08
Рейтинг@Mail.ru


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