Что такое поведение статической переменной при множественном связывании библиотеки, содержащей ее на C++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что такое поведение статической переменной при множественном связывании библиотеки, содержащей ее на C++?

Сообщение Anonymous »


Представим себе сценарий, в котором у меня есть исполняемый файл (A), dll (B) и библиотека (C).

И A, и B связывают C и включают его заголовочные файлы. Теперь в C существует класс:

класс Foo { статическая константа Bar& getShared(); // только что определено в cpp, возвращающее _sharedVarible статическая панель _sharedVarible; }; Означает ли это, что в этом сценарии у меня будет несколько копий sharedVariable внутри A и B, если я вызову getShared() в каждом из них?
>
Если C также является .dll, ситуация будет такой же, или, поскольку C является dll, у меня есть только один уникальный экземпляр этой sharedVariable как для A, так и для B. ?

И последнее: если оба сценария приводят к созданию нескольких копий этой переменной, это решение, в котором C по-прежнему будет .lib:

// в каком-то заголовке C... внешний бар SharedVariable; // в каком-то cpp C... SharedVariable = Бар (); наконец-то предоставил мне только один уникальный экземпляр глобальной sharedVariable для A и B? В этом последнем случае имеет ли значение, является ли C .lib или .dll?
Ответить

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

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

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

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

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