10 Şubat 2021 Çarşamba

DLL İçinde Static Değişken

Giriş
Açıklaması şöyle
Variables that are declared as global in a DLL source code file are treated as global variables by the compiler and linker, but each process that loads a given DLL gets its own copy of that DLL's global variables. The scope of static variables is limited to the block in which the static variables are declared. As a result, each process has its own instance of the DLL global and static variables by default.
Örnek - global değişken
global değişken, sadece içinde bulunduğu translation unit içinde kullanılabilir, ancak linker tarafından .o dosyasına yazılırlar. Dolayısıyla bir başka, .c dosyasında da aynı isimle bir değişken tanımlanamaz.


Örnek - static global değişken
static global değişken, sadece içinde bulunduğu translation unit içinde kullanılabilir. linker tarafından .o dosyasına yazılmazlar. Dolayısıyla bir başka, .c dosyasında da aynı isimle bir değişken tanımlanabilir.

Elimizde şöyle bir kod olsun. Bu static değişken DLL'i her yükleyen uygulama için ayrı ayrı yaratılır.
private static bool isConnected = false;

public static void Connect()
{
    // TODO: Connect.
    isConnected = true;
}

public static void Disconnect()
{
    // TODO: Disconnect.
    isConnected = false;
}

Hiç yorum yok:

Yorum Gönder