2011-12-12 188 views
1

在我的C++ dll應用程序中我想定義一個變量字節,它的值將在隨機值的dll init中初始化,然後它將在dll中保持相同的值。C++ - 靜態變量

  1. 這個變量的定義是什麼?
  2. 我應該在哪裏開始它的代碼(這裏是圖書館的INIT)

感謝。

回答

0
  1. 靜態類成員(可從任何地方訪問)或文件範圍靜態或匿名命名空間成員(可從該編譯單元訪問)。

    1. 類的靜態成員:

      在.H

      class Foo { 
          //... 
          static char random_byte; 
          //... 
      }; 
      

      中的.cpp:

      char Foo::random_byte = init_random_byte(); 
      
    2. 文件範圍的靜態:

      static char random_byte = init_random_byte(); 
      
    3. 匿名空間成員:

      namespace { 
          //... 
          char random_byte = init_random_byte(); 
          //... 
      } 
      
  2. 在C++中的初始化可以是任意的表達和運行時將確保前main()函數來運行它;在加載共享庫的情況下。請記住,這些初始化表達式按編譯單元(單個.cpp)中的外觀順序調用,但是從不同編譯單元進行初始化將以隨機順序運行,因此請確保它們不依賴於對方。它們可以依賴於初始化爲已經初始化的常量的變量。