Size: a a a

2020 August 27

RN

Ruslan Neshta in supapro.cxx
ну для начала сделай в один цпп
источник

EV

Eduard Voronkin in supapro.cxx
у меня msvc141 14.16.27023
источник

RN

Ruslan Neshta in supapro.cxx
а в остальных екстерн обьявление
источник

RN

Ruslan Neshta in supapro.cxx
и будет тебе одна переменная
источник

T

Ternvein in supapro.cxx
Eduard Voronkin
и таких cpp 2
Использование не инлайнится?
источник

hh

horse horssyyy in supapro.cxx
Слово статик не делает твою переменную локальной в пределах программы
источник

hh

horse horssyyy in supapro.cxx
Оно не экспортирует её имя во вне
источник
2020 August 28

hh

horse horssyyy in supapro.cxx
Но в рамках программы у тебя получается два definition одной переменной
источник

hh

horse horssyyy in supapro.cxx
По сути компилятор вообще мог бы пропустить эту ошибку
источник

hh

horse horssyyy in supapro.cxx
И оставить это на совесть линкера я так понимаю
источник

АК

Александр Караев... in supapro.cxx
Eduard Voronkin
мега странно. никогда бы не подумал, что такое может быть. Всегда воспринимал static как что-то зашитое внутри единицы трансляции (.cpp). Почему я не могу иметь две статических переменных с одним именем в разных .cpp - неясно
Ты там cpp не инклудишь случаем?
источник

hh

horse horssyyy in supapro.cxx
Тут нало понимать что сначала создаются object файлы на каждый cpp
источник

hh

horse horssyyy in supapro.cxx
Потом они объединяются линкером в один файл исполняемый
источник

АК

Александр Караев... in supapro.cxx
horse horssyyy
Слово статик не делает твою переменную локальной в пределах программы
Делает локальной в рамках единицы трансляции и не экспортирует вовне этой единицы
источник

hh

horse horssyyy in supapro.cxx
Потом линкер обрабатывает обджект файлы один за другим и находит две одинаковые переменные в одной области видимости и сходит с ума
источник

hh

horse horssyyy in supapro.cxx
Но в твоём случае компилятор тебе подсказал
источник

hh

horse horssyyy in supapro.cxx
Я так это вижу, поправьте если не прав
источник

hh

horse horssyyy in supapro.cxx
Я не знаю наверное в теории TU local пересенные могут в телрии иметь свой префикс или как-то еще различаться
источник

hh

horse horssyyy in supapro.cxx
Но судя по всему этого не происходит
источник

hh

horse horssyyy in supapro.cxx
Кстати не знаю у меня получилось собрать несколько cpp файлов в каждом из которых были
static int global_var = 123;
источник