Статическая переменная в области функции инициализируется дваждыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Статическая переменная в области функции инициализируется дважды

Сообщение Anonymous »

У меня есть функция в статической библиотеке, которая инициализирует статическую переменную с намерением, чтобы эта переменная инициализировалась только один раз:

Код: Выделить всё

static int getIndex() {
static int index = std::ios_base::xalloc();
return index;
}
Теперь эта статическая библиотека связана с основным исполняемым файлом и общей библиотекой, с которой связан исполняемый файл:

Код: Выделить всё

MyApp
- MyStaticLib
- MySharedLib
- MyStaticLib
Есть несколько вызовов getIndex(), как со стороны MyApp, так и со стороны MySharedLib. Теперь, когда я запускаю программу, в двух вызовах getIndex(), оба через MySharedLib, статическая переменная index однажды имеет значение 0, а в следующий раз — значение 1.
Насколько я понимаю, это невозможно. Так почему же переменная инициализируется дважды?
Если я скомпилирую MyStaticLib как общую библиотеку, проблема исчезнет, ​​но я бы предпочел связать ее статически.
Кстати, я компилирую с помощью Clang 15.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ized-twice
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»