172 похожих чатов

Привет. Есть короткий вопрос. У меня есть enum со структурами

внутри. Внешне, я знаю его состояние, и делать проверки не хочу. Как мне получить его варианты без проверок? Да, это ансейф.

13 ответов

5 просмотров

Зачем тебе тогда enum, если ты это можешь в union запихать и все проверки сами удалятся?

Anton-Trionprog Автор вопроса
Эрик
Зачем тебе тогда enum, если ты это можешь в union ...

Да скорее уже для дропа. Кстати у меня часть полей из енума/юниона используются как-то и получается новое состояние поля(ну как состояние автомата), надеюсь, там не будут мувиться переменные(именно что байты копироваться)?

Anton-Trionprog Автор вопроса
Эрик
Будут.

а как избежать? Хотя.. то-то и понятно, ведь выйдет трабла, что мы одновременно читаем енум и его записываем. Кстати, а если сделать через указатели, видимо можно сломать?

Anton Trionprog
а как избежать? Хотя.. то-то и понятно, ведь выйде...

>а как избежать std::pin Читаешь, обдумываешь примеры.

Anton-Trionprog Автор вопроса
Эрик
>а как избежать std::pin Читаешь, обдумываешь прим...

спасибо. Я вот его понять не могу. Не могу сказать, что прямо вчитывался. Мб я спрошу позже.. я тут сам не знаю, чего хочу =) Хочу на двух стульях усидеть. А да, а вот если я переключаю енум, но, например, его поле String одно в обоих вариантах и в одном месте, то может быть не будет мувиться, а просто останется на своём месте? *точнее не мувиться, а будут копироваться байты.

Anton Trionprog
спасибо. Я вот его понять не могу. Не могу сказать...

Во-первых, надо повесить repr(C) или repr(transparent), причём и на enum, и на структуры в enum'е. Во-вторых, если ты случайно сломаешь align, у тебя компилятор вставит паддинг и ты будешь читать мусор. В-третьих, если ты хочешь генераторы, то почитай вот эту вот статью: https://tmandry.gitlab.io/blog/posts/optimizing-await-1/ В-четвёртых, проще не писать такое огромное количество ансейфа руками. Серьёзно, попробуй не писать именно этот код, или хотя бы не делай self-referental структуры там.

Anton-Trionprog Автор вопроса
Эрик
Во-первых, надо повесить repr(C) или repr(transpar...

хмм. спасибо. как я понимаю, repr(C) для енума зафиксирует поля, что бы раст их не перемешивал. Но мб он и догадается, что бы не вычитывать поле на стек, а затем его записывать в енум. Кстати, транспарент понять не могу.

Anton Trionprog
хмм. спасибо. как я понимаю, repr(C) для енума заф...

Из-за отсутствия стабильного ABI скорее всего не догадается. Где-то был issue на эту тему, но мне лень гуглить.

Anton Trionprog
хмм. спасибо. как я понимаю, repr(C) для енума заф...

Репр Си делает предсказуемый лейаут, как в Си, очевидно. То есть надо самому его оптимизировать, но будет точно известно смещение и прочее для полей. Транспарент - всё равно что структуры, в которую завёрнуто поле, будто и нет.

Anton-Trionprog Автор вопроса
Traveller Kolsky
Репр Си делает предсказуемый лейаут, как в Си, оче...

С транспарент не понял, поясни подлиннее, пожалуйста.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта