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

Если делать хедер онли модуль с функциями, их обязательно делать

inline ?

inline в этом случае гарантирует odr ?

И если делать сразу определение методов класса прямо в хедере прямо в классе, все ок будет по odr ?

14 ответов

12 просмотров

inline никогда не гарантирован

inlene - НЕ гарантирован. А ODR от inline-а - ГАРАНТИРОВАН

Обязательно, единственность определения гарантирована

Их НЕ обязательно делать inline, потому что не понятно, как ты собираешься использовать этот хедер. Можно использовать так, что программа будет валидной и без inline, а можно - наоборот. Но , конечно, чтобы использовать заголовок с функциями обычным, нормальным образом, функции должны быть inline или static

Aleksei-Budyakov Автор вопроса
Ilya Zviagin
Их НЕ обязательно делать inline, потому что не пон...

Static ведь будет гарантировать что подключаемая функция не будет торчать наружу. А в чем разница тогда inline/ static, когда что из этого применять ?

Aleksei Budyakov
Static ведь будет гарантировать что подключаемая ф...

Да, будет. Одинаково то, что оба дают не нарушить ODR, а всё остальное - разное. У тебя вполне может быть, что функция будет применяться только в одной единице трансляции. В этом случае static-а достаточно.

Aleksei Budyakov
Static ведь будет гарантировать что подключаемая ф...

Смари Все довольно просто 1. Инклюд это просто копирование текста 2. Компилируются только cpp файлы (== единицы трансляции == TU) 3. Статик гарантирует что функция не будет торчать наружу из TU (к ней нельзя прилинковаться) 4. Инлайн говорит, что функция всегда будет одна на всю программу

Aleksei Budyakov
Static ведь будет гарантировать что подключаемая ф...

Вообще сложно сказать. inline теперь вообще эфимерное какое-то понятие. По сути , то же, что static, но НЕ статик.

Aleksei-Budyakov Автор вопроса
Danya🔥
Смари Все довольно просто 1. Инклюд это просто коп...

Понятно. Спасибо. Получается static inline = ub ?

Aleksei Budyakov
Понятно. Спасибо. Получается static inline = ub ?

Ну ты попробуй сначала так сделать)

Aleksei-Budyakov Автор вопроса
Ilya Zviagin
Их НЕ обязательно делать inline, потому что не пон...

Получается валидной без inline и без static она будет только если она подключается в один единственный хедер, а в других только forward declaration можно?

Aleksei-Budyakov Автор вопроса
Ilya Zviagin
Да

Понятно. Спасибо

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта