|
|
 |
Ответов
|
Jan 17 2017, 12:21
|

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

|
Следующий шаг: CODE template<typename T> void LOG_Send(uint32_t storage, T const & data) { LOG_Send(storage, &data, sizeof(T)); } Позволяет писать в каждой точке вызова LOG_send(storage, my_struct) вместо LOG_send(storage, &my_struct , sizeof(my_struct)) и связанных с этим ошибок. Но противники плюсов будут привычно ныть об "увеличении объема кода и подъедании ограниченных ресурсов".
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 17 2017, 14:19
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Сергей Борщ @ Jan 17 2017, 15:21)  Следующий шаг: Код template<typename T> void LOG_Send(uint32_t storage, T const & data) { LOG_Send(storage, &data, sizeof(T)); } Позволяет писать в каждой точке вызова LOG_send(storage, my_struct) вместо LOG_send(storage, &my_struct , sizeof(my_struct)) и связанных с этим ошибок. Не-а. Следующий шаг - это разобраться, зачем вообще копировать данные из data в buf. Цитата(Сергей Борщ @ Jan 17 2017, 15:21)  Но противники плюсов будут привычно ныть об "увеличении объема кода и подъедании ограниченных ресурсов". Да пусть ноют. Какой смысл спорить с людьми, ни устриц не видели, ни Пастернака не читали? Цитата(Эдди @ Jan 17 2017, 13:31)  скажем, на 32-битной системе int16_t скорее всего будут с выравниванием по 4 лежать А можно примеры таких систем? Они ведь очень широко распространены, правда?
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Jan 17 2017, 14:27
|
Знающий
   
Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250

|
Цитата(esaulenka @ Jan 17 2017, 17:19)  Да пусть ноют. Какой смысл спорить с людьми, ни устриц не видели, ни Пастернака не читали? Если даже абстрагироваться от этого, то есть элементарная причина не использовать С++: зачем учить лишний ЯП, если С за глаза хватает? Вы бы еще на go каком-нибудь предложили код написать ☺ Цитата А можно примеры таких систем? Они ведь очень широко распространены, правда? Элементарно. У меня была проблема с портированием старого клиент-серверного кода на 64-битную архитектуру с 32-битной: там мало того, что бинарная структура передавалась и в памяти она безо всякого явного выравнивания хранилась, так еще и нестрогие типы данных использовались. Вот во что это в итоге превратилось. Без #pragma pack(push, 4) данные паковались бы с учетом 64-битности (аналогично и со всеми int'ами и т.п. нестрогими типами), в итоге поля структуры совершенно не соответствовали бы описанным позициям. Благо, обычно little-endian архитектура, а то пришлось бы еще байты туда-сюда распихивать (а ведь бывают процессоры, в которых little-endian отсутствует!). Еще во всяких граф. и мат. пакетах для ускорения вычислений данные обычно даже в массивах выравнивают по машинному слову. В итоге тоже может веселуха получиться при переходе между архитектурами. Поэтому если уж работать с бинарными данными, то строго фиксировать их положение.
|
|
|
|
|
Jan 17 2017, 16:00
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Эдди @ Jan 17 2017, 17:27)  Если даже абстрагироваться от этого, то есть элементарная причина не использовать С++: зачем учить лишний ЯП, если С за глаза хватает? Вы бы еще на go каком-нибудь предложили код написать ☺ Можно абстрагироваться и ничего не делать вообще совсем, только языком чесать. (по большому секрету: BTA_lib можно и нужно писать на плюсах. Там даже подвижки к объектной модели есть). Цитата(Эдди @ Jan 17 2017, 17:27)  Элементарно. У меня была проблема с портированием старого клиент-серверного кода на 64-битную архитектуру с 32-битной: Это всё прекрасно. Баек "как сделать плохо" я и сам могу рассказать. Только я задавал совсем другой вопрос.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
Сообщений в этой теме
Jenya7 Логирование данных. Jan 17 2017, 09:31 novikovfb Цитата(Jenya7 @ Jan 17 2017, 13:31) В стр... Jan 17 2017, 09:38 Jenya7 Цитата(novikovfb @ Jan 17 2017, 15:38) da... Jan 17 2017, 09:47  haker_fox QUOTE (Jenya7 @ Jan 17 2017, 17:47) то ес... Jan 17 2017, 10:06   Jenya7 Цитата(haker_fox @ Jan 17 2017, 16:06) Да... Jan 17 2017, 10:14 Эдди Лучше сериализовать данные, а не передавать их в б... Jan 17 2017, 10:23 Jenya7 Цитата(Эдди @ Jan 17 2017, 16:23) Лучше с... Jan 17 2017, 10:27 haker_fox QUOTE (Эдди @ Jan 17 2017, 18:23) Иначе с... Jan 17 2017, 10:51  Эдди Цитата(haker_fox @ Jan 17 2017, 13:51) TC... Jan 17 2017, 11:08 Эдди Тогда в самом начале сохраняйте информацию о типе ... Jan 17 2017, 10:31 aiwa Цитата(Jenya7 @ Jan 17 2017, 11:31) В стр... Jan 17 2017, 10:38 Эдди Еще проще и быстрее по производительности было бы ... Jan 17 2017, 10:41 Jenya7 Цитата(Эдди @ Jan 17 2017, 16:41) Еще про... Jan 17 2017, 10:55 aiwa Цитата(Эдди @ Jan 17 2017, 12:41) Еще про... Jan 17 2017, 10:44 Jenya7 Цитата(Сергей Борщ @ Jan 17 2017, 18:21) ... Jan 17 2017, 14:02  jorikdima Цитата(Jenya7 @ Jan 17 2017, 06:02) подоз... Jan 17 2017, 16:38   Jenya7 Цитата(jorikdima @ Jan 17 2017, 21:38) В ... Jan 18 2017, 06:46    haker_fox QUOTE (Jenya7 @ Jan 18 2017, 14:46) потом... Jan 18 2017, 08:06    Сергей Борщ QUOTE (Jenya7 @ Jan 18 2017, 08:46) вот е... Jan 18 2017, 08:53    mdmitry Цитата(Jenya7 @ Jan 18 2017, 10:46) ....
... Jan 18 2017, 15:39     Jenya7 Цитата(mdmitry @ Jan 18 2017, 20:39) Посм... Jan 18 2017, 17:06  Jenya7 Цитата(esaulenka @ Jan 17 2017, 20:19) Не... Jan 17 2017, 14:26   Сергей Борщ QUOTE (Эдди @ Jan 17 2017, 16:27) Если да... Jan 17 2017, 15:03    Jenya7 Цитата(Сергей Борщ @ Jan 17 2017, 21:03) ... Jan 17 2017, 15:17     Эдди Цитата(Jenya7 @ Jan 17 2017, 18:17) на эт... Jan 17 2017, 15:23     Сергей Борщ QUOTE (Jenya7 @ Jan 17 2017, 17:17) так я... Jan 17 2017, 16:34      Jenya7 Цитата(Сергей Борщ @ Jan 17 2017, 22:34) ... Jan 17 2017, 17:02    Эдди Цитата(esaulenka @ Jan 17 2017, 19:00) BT... Jan 17 2017, 16:28  zltigo Цитата(esaulenka @ Jan 17 2017, 16:19) А ... Jan 18 2017, 18:40   Сергей Борщ QUOTE (zltigo @ Jan 18 2017, 20:40) Поско... Jan 18 2017, 19:16 Jenya7 кстати а как мне вычислить размер void *data? size... Jan 17 2017, 14:38 Сергей Борщ QUOTE (Jenya7 @ Jan 17 2017, 16:38) кстат... Jan 17 2017, 14:52  Jenya7 Цитата(Сергей Борщ @ Jan 17 2017, 20:52) ... Jan 17 2017, 14:59  Эдди Цитата(Сергей Борщ @ Jan 17 2017, 17:52) ... Jan 17 2017, 15:11 Jenya7 сделал такую структуру.
Кодtypedef struct LOG_PAR... Jan 17 2017, 16:17 Сергей Борщ QUOTE (Эдди @ Jan 17 2017, 17:11) 32-битн... Jan 17 2017, 16:23 aiwa Цитата(Эдди @ Jan 17 2017, 16:27) Если да... Jan 18 2017, 22:54
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|