Скажите ребят все таки ,что делает этот макрос , UE_INLINE_GENERATED_CPP_BY_NAME

и в каких случаях его применять?

8 ответов

40 просмотров

Это какая та новая муть, с версии 5.1 и далее. Формально этот макрос раскрывается в инклюд CoreTypes.h. По сути он нужен для какой-то оптимизации сборки твоего кода движком. Есть пример в Лире как его правильно использовать.

Dim-Alek Автор вопроса
Михаил Никонов
Это какая та новая муть, с версии 5.1 и далее. Фор...

Ну его добавляют просто и пишут название класса и все,я не пойму просто чё он делает

Dim Alek
Ну его добавляют просто и пишут название класса и ...

Я ж тебе написал, что он делает. Ты ожидаешь, что этот макрос еще и за пивом ходит?

Dim-Alek Автор вопроса
Михаил Никонов
Я ж тебе написал, что он делает. Ты ожидаешь, что ...

Так, для оптимизации,все спасибо) (хочется прям как препод в инсте все подробно рассказал,но да тут я ахерел с такими запросами)

Dim Alek
Так, для оптимизации,все спасибо) (хочется прям ка...

Это ж плюсы, тут много всякого колдунства с хедерами и их включением и так и сяк в разном порядке, для оптимизации скорости сборки. Чтобы понять, как это работает, надо разбираться не только в движке, но еще и в устройстве компиляторов.

Dim-Alek Автор вопроса
Dim Alek
Хочу знать всё просто ,я извиняюсь

Легкого чтения на эту тему нет. Никто особо не пишет про это статьи простым понятным языком, иначе я б тебе просто ссылку дал. Если вкратце, то ситуация такая. В плюсах всегда была проблема с временем компиляции. Хедеров бывает много, они все должны подключаться методом простого присоединения содержимого файла. Макросов бывает много, их все тоже надо раскрывать перед компиляцией. Темплейтов бывает много, они инстанциируются методом тупой подстановки их кода в каждый файл. В итоге к моменту начала работы собственно компилятора языка система сборки уже проделала кучу работы и код, подлежащий парсингу и компиляции, распух в разы. Ситуация усугубляется тем, что серьезные игровые движки - это огромные программные системы, одни из самых больших в истории человечества. Далее, ситуация еще усугубляется тем, что Unreal парсит хедеры твоих классов своим дополнительным парсером (написан на C#, является частью системы сборки в даижке) и из всяких макросов типа UE_чегото_там генерит еще кучу дополнительного плюсового кода. Если, не приведи господь, в проекте есть блюпринты, помеченные для нативизации (в 5 версии это убрали), то движок сгенерит еще кучу кода. Итоговое время компиляции даже небольшой игры может быть весьма значительным. Всякие precompiled headers не особо помогают, поскольку множество хедеров меняются по мере разработки игры. Чтобы ускорить компиляцию, разработчики движка колдуют с порядком включения инклюдов, придумывают другие макросы, совершенствуют систему сборки и т.д. Документации на эту тему очень мало. Иногда устройство этой системы сборки разработчики обсуждают с разрабами других движков за пивом вечером после GDC. Доклады открытые иногда читают, но очень редко и только про отдельные аспекты.

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта