|
отследить изменение переменной. |
|
|
|
Dec 15 2015, 10:14
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
есть пакет с данными uint8_t packet[20] . переменная uint32_t занимает 4 байта. соответственно если я хочу посмотреть изменилась ли переменная в следующей посылке я могу сделать так Код if (new_packet[0] != old_packet[0] || new_packet[1] != old_packet[1] || new_packet[2] != old_packet[2] || new_packet[3] != old_packet[3]) или так Код if(memcmp(new_packet, old_packet, 4) != 0) вопрос какой способ быстрее?
|
|
|
|
|
 |
Ответов
|
Dec 15 2015, 14:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Jenya7 @ Dec 15 2015, 15:39)  а что можно прямо так ? (my_struct *) my_arr Да, конечно. Преобразование типа говорящее компилятору, что там по указателю на самом деле не свалка байтов, а структура. В структуре находися какая-то 32 bit переменая. Осталось только сказать компилятору что бы взял эту переменную. ((my_struct *) my_arr)->value_32bit И сделает от это МАСИМАЛЬНО эффективным способом. Для человеческой читабельности можно спрятать преобразование в макрос, или промежуточную переменную, которую компилятор все равно заоптимизирует. Получится типа: my_struct->value_32bit
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Jenya7 отследить изменение переменной. Dec 15 2015, 10:14 zltigo QUOTE (Jenya7 @ Dec 15 2015, 12:14) вопро... Dec 15 2015, 10:18 Jenya7 Цитата(zltigo @ Dec 15 2015, 16:18) Один ... Dec 15 2015, 11:09  msalov Цитата(Jenya7 @ Dec 15 2015, 14:09) так ч... Dec 15 2015, 11:33 Dog Pawlowa Ну, для начала желательно знать, что за ядро.
То,... Dec 15 2015, 11:32 Jenya7 Цитата(Dog Pawlowa @ Dec 15 2015, 17:32) ... Dec 15 2015, 11:37  msalov Цитата(Jenya7 @ Dec 15 2015, 14:37) функц... Dec 15 2015, 11:41   Jenya7 Цитата(msalov @ Dec 15 2015, 17:41) Адрес... Dec 15 2015, 11:45    zltigo QUOTE (Jenya7 @ Dec 15 2015, 13:45) допус... Dec 15 2015, 12:00     Jenya7 Цитата(zltigo @ Dec 15 2015, 18:00) Нет, ... Dec 15 2015, 12:07      zltigo QUOTE (Jenya7 @ Dec 15 2015, 14:07) какая... Dec 15 2015, 12:18       Jenya7 Цитата(zltigo @ Dec 15 2015, 18:18) 1) Не... Dec 15 2015, 12:22        zltigo QUOTE (Jenya7 @ Dec 15 2015, 14:22) и все... Dec 15 2015, 12:29        msalov Цитата(Jenya7 @ Dec 15 2015, 15:22) и все... Dec 15 2015, 12:29 zltigo QUOTE (Dog Pawlowa @ Dec 15 2015, 13:32) ... Dec 15 2015, 11:54  Jenya7 Цитата(zltigo @ Dec 15 2015, 17:54) Надо,... Dec 15 2015, 11:56 XVR Цитатакакая структура. у меня функция принимает ма... Dec 15 2015, 12:15 Jenya7 сделал листинг ради интереса.
Кодif (new_packe... Dec 16 2015, 08:45 zltigo QUOTE (Jenya7 @ Dec 16 2015, 10:45) можно... Dec 16 2015, 11:07 XVR Цитатаif(*((uint32_t*)&new_packet[4]) != *... Dec 16 2015, 11:09 zltigo QUOTE (XVR @ Dec 16 2015, 13:09) На ARM э... Dec 16 2015, 11:18  CrimsonPig Цитата(zltigo @ Dec 16 2015, 11:18) Не об... Dec 16 2015, 15:00   zltigo QUOTE (CrimsonPig @ Dec 16 2015, 17:00)
... Dec 16 2015, 15:08    CrimsonPig Цитата(zltigo @ Dec 16 2015, 15:08) К чем... Dec 16 2015, 15:25     zltigo QUOTE (CrimsonPig @ Dec 16 2015, 17:25) Н... Dec 16 2015, 15:46    XVR Цитата(zltigo @ Dec 16 2015, 18:08) Для н... Dec 16 2015, 15:30     zltigo QUOTE (XVR @ Dec 16 2015, 17:30) Не всегд... Dec 16 2015, 15:38      CrimsonPig Цитата(zltigo @ Dec 16 2015, 15:38) Догов... Dec 16 2015, 15:43 XVR gcc 4.8.2 не знает как инлайнить memcmp ( http://g... Dec 17 2015, 11:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|