Size: a a a

2021 February 15

D

Dmitriy in pro.cxx
Подавил Warning, ушёл тестить. Если упадёт - вечер предстоит нескучный
источник

кY

кисонька Yorkin... in pro.cxx
Парни, хочу попробовать накидать простенький интерфейс для flow-based programming, думаю взять imgui, но хочу кроссплатформенное и чтобы ещё в вебе работало хорошо. Вот на реддитах пишут, что оно довольно сносно работает. Стоит ли в это лезть или посмотреть на что-то другое?
источник

TW

Tony Werner in pro.cxx
нормально
источник

TW

Tony Werner in pro.cxx
я даже хз что можно найти лучше чтобы еще и в вебе запускать
источник

DF

Dollar Føølish in pro.cxx
Имгуи умеет в веб?
источник

TW

Tony Werner in pro.cxx
Dollar Føølish
Имгуи умеет в веб?
плюсы можно скомпилить
источник

AD

Andrey Davydov in pro.cxx
Egor Pugin
почему так не работает? Если вынести внутреннюю структуру наружу, то собирается
https://godbolt.org/z/nGbYoK
источник

TW

Tony Werner in pro.cxx
Dollar Føølish
Имгуи умеет в веб?
источник

EP

Egor Pugin in pro.cxx
спасибо
источник

AR

Alexandr Rudalev in pro.cxx
Побитый Кирпич
inline в языке это именно "другая ветка в ODR". Идея в том, чтобы перестать считать это как "встраивание кода".
Зачем побочный эффект ставить как основное свойство?
Основное свойство: inline позволяет встроить код.
Побочный эффект: если функцию компилятор решил реализовать - то результат должен быть одинаковым для разных единиц трансляции и объединён при линковке.
static inline — вообще не имеет отношения к ODR, так как отпадает требование к однозначности результата. Компилятору даже не требуется следовать "соглашению о вызовах".

Так что помнить про особые требования к реализации inline функций стоит (как и про любые вещи с UB в C++), но ставить это во главе inline я бы не стал.
источник

DF

Dollar Føølish in pro.cxx
Нет кирпич прав
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
Зачем побочный эффект ставить как основное свойство?
Основное свойство: inline позволяет встроить код.
Побочный эффект: если функцию компилятор решил реализовать - то результат должен быть одинаковым для разных единиц трансляции и объединён при линковке.
static inline — вообще не имеет отношения к ODR, так как отпадает требование к однозначности результата. Компилятору даже не требуется следовать "соглашению о вызовах".

Так что помнить про особые требования к реализации inline функций стоит (как и про любые вещи с UB в C++), но ставить это во главе inline я бы не стал.
> inline позволяет встроить код

Это как раз побочное следствие.
Или ты хочешь сказать, что без Inline код никогда не встроится?
источник

кY

кисонька Yorkin... in pro.cxx
Tony Werner
нормально
Спасибо, попробую поиграться, посмотреть на размер .wasm-файликов. Пишут, что сейчас emscripten неплохо продвинулся в этом плане
источник

AR

Alexandr Rudalev in pro.cxx
Побитый Кирпич
> inline позволяет встроить код

Это как раз побочное следствие.
Или ты хочешь сказать, что без Inline код никогда не встроится?
Если функция не была помечена как inline то она будет реализована явно в соответствии с соглашением о вызове.
источник

ПК

Побитый Кирпич... in pro.cxx
Вернее так: https://godbolt.org/z/oW5xbe
источник

AR

Alexandr Rudalev in pro.cxx
Ну стоит отличать вычисление значения на этапе компиляции от реализации. foo(int) - была реализована
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
Ну стоит отличать вычисление значения на этапе компиляции от реализации. foo(int) - была реализована
Смотри второй вариант
источник

AR

Alexandr Rudalev in pro.cxx
А теперь добавь inline
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
Если функция не была помечена как inline то она будет реализована явно в соответствии с соглашением о вызове.
Короче, сейчас ситуация такая. Компилятор умеет встраивать (и встраивает когда захочет) любую функцию, код которой он видит. inline имеет побочное свойство "позволяет встраивать код", потому что засчёт своей природы заставляет программиста писать код в каждом TU, что приводит к тому, что компилятор видит тело функции и встраивает
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
А теперь добавь inline
Без inline функция всё равно встроена в main. Какая разница что будет с Inline?
источник