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

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

8 ответов

36 просмотров

Это какая та новая муть, с версии 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. Доклады открытые иногда читают, но очень редко и только про отдельные аспекты.

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

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

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
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
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
Карта сайта