2011-12-12 178 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)中的外观顺序调用,但是从不同编译单元进行初始化将以随机顺序运行,因此请确保它们不依赖于对方。它们可以依赖于初始化为已经初始化的常量的变量。