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

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

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

25 ответов

7 просмотров

тонкость в том что 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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
28
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
В clientsettings есть поле client_rates. В поле pagebuilder. Как получить то его?)
Andrey K
8
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Карта сайта