在我的C++ dll應用程序中我想定義一個變量字節,它的值將在隨機值的dll init中初始化,然後它將在dll中保持相同的值。C++ - 靜態變量
- 這個變量的定義是什麼?
- 我應該在哪裏開始它的代碼(這裏是圖書館的INIT)
感謝。
在我的C++ dll應用程序中我想定義一個變量字節,它的值將在隨機值的dll init中初始化,然後它將在dll中保持相同的值。C++ - 靜態變量
感謝。
靜態類成員(可從任何地方訪問)或文件範圍靜態或匿名命名空間成員(可從該編譯單元訪問)。
類的靜態成員:
在.H:
class Foo {
//...
static char random_byte;
//...
};
中的.cpp:
char Foo::random_byte = init_random_byte();
文件範圍的靜態:
static char random_byte = init_random_byte();
namespace {
//...
char random_byte = init_random_byte();
//...
}
在C++中的初始化可以是任意的表達和運行時將確保前main()
函數來運行它;在加載共享庫的情況下。請記住,這些初始化表達式按編譯單元(單個.cpp)中的外觀順序調用,但是從不同編譯單元進行初始化將以隨機順序運行,因此請確保它們不依賴於對方。它們可以依賴於初始化爲已經初始化的常量的變量。
它同樣作爲一個正常的全局變量的定義。
DllMain中:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspx
順便說一句,我建議你使用一個函數返回它的靜態變量而不是全局變量。