Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
Тут приведен такой пример: header.h: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Если предположить, что inline- переменные ведут себя как inline- функции, т.е. подставляют свой код в место использования, то получается несколько экземляров одной переменной + для нетривиальных переменных вызов конструкторов / деструкторов. Или я не правильно понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:51 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
Есть другая проблема: если в my.h ты напишешь Код: plaintext 1. 2. 3. 4. и затем сделаешь в нескольких *.cpp Код: plaintext 1. то такой код не скомпилируюется. Я так понимаю эту проблему порешали с помощью "inline". ИМХО в статье автор напутал немного, написал про *.h вместо cpp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:58 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
В общем MyVar это инициализированная глобальная переменная - одна для всего кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:01 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:02 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLЕсли предположить, что inline- переменные ведут себя как inline- функции, т.е. подставляют свой код в место использованияЭто второстепенное свойство inline-функций. Главное свойство — это взаимодействие с One ODR-rule. Функция без inline должна быть определена только один раз, а inline — в каждой единице трансляции, в которой используется. Также и с переменными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:08 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
a guestЭто второстепенное свойство inline-функций. Главное свойство — это взаимодействие с One ODR-rule. Функция без inline должна быть определена только один раз, а inline — в каждой единице трансляции, в которой используется. Также и с переменными. Насколько я понимаю h- файл с инлайн- переменной включается в каждый cpp- файл, которые используют эту переменную, и потому эта переменная становится определена в каждой единице трансляции. Но вот вопрос избыточного вызова конструкторов / деструкторов меня беспокоит (хоть он и "второстепенный"). Получается в каждой единице трансляции будет создан самостоятельный независимый объект, который со временем надо будет удалять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:25 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLПолучается в каждой единице трансляции будет создан самостоятельный независимый объект, который со временем надо будет удалять?Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:28 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
a guestAlekseySQLПолучается в каждой единице трансляции будет создан самостоятельный независимый объект, который со временем надо будет удалять?Нет. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:32 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLПолучается в каждой единице трансляции будет создан самостоятельный независимый объект, который со временем надо будет удалять? Прочитайте вышеприведенную ссылку http://en.cppreference.com/w/cpp/language/inline Там помимо прочих важных вещей сказано что если не указано слово static то inline переменная/функция будет иметь одинаковый адрес во всех единицах трансляции. Т.е. будет всего один экземпляр на всю программу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:32 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyТам помимо прочих важных вещей сказано что если не указано слово static то inline переменная/функция будет иметь одинаковый адрес во всех единицах трансляции. Т.е. будет всего один экземпляр на всю программу. Если честно, то применительно к инлайн-функциям мне эта формулировка взрывает мозг. Я понимаю так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. этот код в итоге будет скомпилирован как Код: plaintext 1. 2. И где тут " одинаковый адрес во всех единицах трансляции" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:40 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
Dima T, Имеется в виду случай когда функция незаинлайнена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:46 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
Dima Tэтот код в итоге будет скомпилирован как Это если компилятор решит прислушаться к рекомендации и действительно функцию заинлайнит. А он ведь может и проигнорить... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:56 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
Народ, а можно еще один ламерский вопрос: если у меня контейнер объявлен сonst, то это запрещает добавлять/удалять элементы или также нельзя менять значения элементов контейнера? Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 16:03 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, Тоже нельзя. Только буковки A у тебя разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 16:16 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
AmKadAlekseySQL, Тоже нельзя. Только буковки A у тебя разные. Пасибки! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 16:18 |
|
||
|
[С++17] Как работают inline- переменные?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА он ведь может и проигнорить...тогда можно __forceinline (для MS точно, для остальных не знаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 05:13 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39632611&tid=2017883]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 17ms |
| total: | 181ms |

| 0 / 0 |
