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

Понял, спасибо ) объясните в чем разница исполнения кода? У

меня сейчас он выполняется идентично как с инлайн. в чем тонкость?

25 ответов

8 просмотров

тонкость в том что inline уже другое делает

С inline у тебя могла бы быть отдельная такая переменная в каждой единице трансляции. Если это тебе нужно, то вперёд.

Вообще, призываю не использовать тебе средства языка, которые ты не понимаешь. Надо тебе что-то - изучи, пойми, используй. Не понимаешь - не используй

Ilya Zviagin
С inline у тебя могла бы быть отдельная такая пере...

Разве? Или инлайн для стариков внутри класса как-то по-другому работает в отличии от других контекстов?

Слава
Разве? Или инлайн для стариков внутри класса как-т...

Да не будет один счётчик на все единицы трансляции

Ilya Zviagin
С inline у тебя могла бы быть отдельная такая пере...

Вот что говорит cppref: An inline function or variable (since C++17) with external linkage (e.g. not declared static) has the following additional properties: It has the same address in every translation unit. Inline variables eliminate the main obstacle to packaging C++ code as header-only libraries. Там даже есть пример использования неконстантоной инлайн переменной в двух TU, но пример показался мне не очень показательным

Ofee Oficsu
Вот что говорит cppref: An inline function or vari...

The inline specifier, when used in a decl-specifier-seq of a variable with static storage duration (static class member or namespace-scope variable), declares the variable to be an inline variable. Ну даже на цппрефе написано про Статик мемберы

Тимата 🏳️‍🌈 Тэнкю
А для чего тогда extern?

Я крайне редко вижу его в коде

Слава
В плане?

Говорится что инлайн переменная во всех транзишн юнитах имеет один адрес. А разве экстерн делает не тоже самое?

Тимата 🏳️‍🌈 Тэнкю
Говорится что инлайн переменная во всех транзишн ю...

Экстерн делает объявление и не определяет переменную

Слава
The inline specifier, when used in a decl-specifie...

Не совсем понимаю, к чему этот отрывок. На cppref чётко разделяют значения static: When used in a declaration of a class member, it declares a static member. When used in a declaration of an object, it specifies static storage duration Наша инлайн переменная не объявлена со static storage duration, она объявлена как static member (см. ниже, нам не важен storage duration, нам важен internal/external linkage)

Слава
А какой тогда у нее стораж дурэйшн?

Тут, я, конечно, некорректно сделал акцент и выразился: Static members of a class are not associated with the objects of the class: they are independent variables with static or thread (since C++11) storage duration or regular functions Но: Static data members of a class in namespace scope have external linkage if the class itself has external linkage (is not a member of unnamed namespace)

Ofee Oficsu
Тут, я, конечно, некорректно сделал акцент и выраз...

Ну вроде линкаж и стораж дурайшн раздельные вещи)

Слава
Ну вроде линкаж и стораж дурайшн раздельные вещи)

Да, поэтому я и указал, что неправильно акценты расставил. Просто исходя из того, о чём писал @MasterZiv, он, похоже, подразумевал, что static inline переменная класса имеет internal linkage

Ofee Oficsu
Да, поэтому я и указал, что неправильно акценты ра...

Ну может быть. Я написал просто, что на цппрефе написано в скобках Статик мемберы класса и нэймспейс переменные и то, что они с инлайном становятся инлайн переменными.

Ilya Zviagin
Странно было бы если б было иначе

Ну инлайн переменные имеют экстернал линкаж

Ilya Zviagin
Именно

Но ведь они имеют external linkage

𝐛𝐨𝐭𝟎𝐯𝐨𝐝 𝐛𝐨𝐭𝟎𝐯𝐨𝐝 Belyy
Что то значит?

Если я всё верно понимаю и у меня нет дыры в понимании спецификаторов и квалификаторов в C++... То у вас всё правильно в этом плане — использовать статические инлайн переменные класса с инициализатором прямо в определении класса можно, они для этого и были добавлены в C++17

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

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

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