Добавление данных в массив, прочитанный из структуры в цикле - PullRequest
0 голосов
/ 30 октября 2019

Давайте предположим, что я хочу собрать данные из структуры (которые поступают из другого источника, но из всех данных uint 8) в массив типа:

uint8 myArray[10];

myArray[0] = 2;
myArray[1] = date.day;
myArray[2] = date.year;
myArray[3] = date.month;
myArray[4] = softwrare_majornumber;
myArray[5] = softwrare_minor_number;
myArray[6] = 2;
myArray[7] = 5;
myArray[8] = 10;
myArray[9] = versions.header_v2;

Как сделать это в цикле самым быстрым способом?

1 Ответ

0 голосов
/ 30 октября 2019

Если вы пытаетесь уменьшить дублирование кода или повторяющийся код, вы можете зафиксировать это действие с помощью макроса. В качестве простого примера:

#define SET_MY_ARRAY(A, ...) \
    memcpy((A), (uint8_t[]){ __VA_ARGS__ }, sizeof(A))

SET_MY_ARRAY(myArray,
        2, date.day, date.year, date.month,
        softwrare_majornumber, softwrare_minor_number,
        2, 5, 10, versions.header_v2);

Это спорно

1005 * В ходе тестирования, ваше индивидуальное initailizations привело ли это повышение читаемости в два раз, как много ходов, как моя версия.. Если производительность инициализации важна, вы можете просто захватить отдельные назначения в макросе.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...