Evgenii
нормальный код не сегфолтит инфа сотка
Александр
Вопрос на засыпку - как по сети принимать/передавать POD типы сразу целым куском без UB?
Anonymous
думаю, что никак
Matwey
Anonymous
там же это, выравнивание, не?
Александр
Предполагая, что я слежу за выравниванием и размерами типов
Александр
Т.е. в памяти идентично всё
Matwey
Тогда сделай union
Matwey
Из структуры и буфера
Cuno
А где в таком случае UB?
Matwey
В буфер читай пиши
Cuno
При касте в char*?
Anonymous
ну reinterpret_cast<uint8_t*>(&pod) и используй, как массив с размером структуры
Александр
Это UB всё
Александр
Я так и юзал всегда. То юнион, то каст
Anonymous
ну дк других способов нет
Александр
А сейчас задался вопросом - это ж UB
Anonymous
UB UB UB UB UB, работает везде, где надо
Matwey
А где там UB? char не подпадает под strict aliasing
Anonymous
в supamegapro.cxx сразу уж
Anonymous
со своими "я люблю сегфолты (нет)"
Александр
Соответственно
A a;
s.read((char*)&a, sizeof(a));
Тоже валиден?
Александр
Будем считать, что да
Anatoly
Anatoly
валиден
Pavel
а что насчет выравнивания полей в структуре?
Pavel
если будет с одной стороны 32 битная с другой 64 битная то точно всё уедет
Pavel
attribute packed и прочее где?
Anatoly
Для таких структур устанавливается выравнивание явно. А вообще при передаче POD объектов по сети слишком много допущений должно быть выполнено: одинаковое выравнивание, одинаковая разрядность платформы, одинаковый порядок следования байт (endianness)
Anatoly
здесь самопал бы я не городил, а взял бы https://developers.google.com/protocol-buffers/
Александр
Pavel
я не про типы а про выравнивание их в структуре
Александр
вот endianness - это важно, да
Александр
самопал иногда нужно городить, когда на "той" стороне уже придумали свой бинарный протокол и не реагируют на иной
Александр
например, когда пилишь эмулятор к какой-нибудь игрушке (даже мобильной)
Anatoly
ну, тогда ничего не попишешь, тогда самопал
Александр
всем спасибо за объяснения
Pavel
https://godbolt.org/g/zQDJXz
Pavel
слоупок.жпг
Александр
да это понятно. packed и #pragma никто не отменял
Mikhail
Всем привет! Кто нибудь знает, можно определить глобально в проекте макрос с параметрами? Чтобы не нужно было инклудить файл где он объявлен
Evgenii
нет
Mikhail
блин, жаль :(
Vladislav
Anatoly
с параметрами
Mikhail
это разве с параметрами?
Berkus
https://godbolt.org/g/TtCysv не благодари
Anonymous
Выглядит страшно
Mikhail
Berkus
ну если не вариант то ответ НЕТ
Berkus
ну если им билд систему не пропатчить, то...
Stanislav
Stanislav
если мейкфайл то какой нибудь CXXFLAGS=-D_MY_UBER_MACROS
Berkus
там можно компилеру указать пре-инклюдить хедер, а в хедер напихать что угодно
Ned
Парни. Кто-то собирал llvm вручную?
Evgenii
Ned
Ну сам компилил, а не пребилд бинари юзал
Evgenii
а, ну я
Ned
Блин точно
Ned
Собрался таки собрать себе кросскомпиль для D
Berkus
все что ему надо - это сказать какие коммиты брать для сборки, остальное он сам. можно тупо master вбить тогда из мастера соберет
Berkus
можешь туда ldc сразу затолкать в дерево, если он плагином собирается
Berkus
хотя подозреваю что нет
Ned
Да, я читал его
Ned
Нет, плагином не собирается: (
Berkus
ну тады ой
Berkus
главное не забудь -j12 или больше ему задать если ты мейкфайлы генеришь
Berkus
а то неделю будет собираться
Berkus
ну или просто взять ninja
Ned
А сам себя он откомпилить может? Есть уже предустановленный шланг и ллвм. Он точно подцепит сам себя, а не гцц?
Berkus
что в CC/CXX укажешь то и подцепит
Berkus
CMAKE_C_COMPILER есть такая штука
Ned
Со времён сборки lfs очень бешусь с параметров конфигурации