静态变量

C++ - Static Variable

本文关键字:变量 静态      更新时间:2023-10-16

在我的c++ dll应用程序中,我想定义一个变量字节,它的值将在dll初始化中以随机值初始化,然后它将在dll活动期间保持相同的值。

  1. 这个变量的定义是什么?
  2. 我应该在哪里初始化它的代码(哪里是库的初始化)

谢谢。

  1. 和普通全局变量的定义是一样的

  2. in dllmain: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspx

顺便说一句,我建议你使用一个函数返回它的静态变量,而不是一个全局变量。

  1. 静态类成员(可从任何地方访问)或文件作用域静态或匿名命名空间成员(仅可从该编译单元访问)。

      静态类成员: . h

      :

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

      :

      char Foo::random_byte = init_random_byte();
      
  2. File-scoped静态:

    static char random_byte = init_random_byte();
    
  3. 匿名命名空间成员:

    namespace {
        //...
        char random_byte = init_random_byte();
        //...
    }
    
  • 在c++中,初始化器可以是任意表达式,并且运行时将确保在main()函数之前运行它;在加载共享库的情况下。请记住,这些初始化表达式是按照编译单元(单个.cpp)内出现的顺序调用的,但是来自不同编译单元的初始化将以随机顺序运行,因此请确保它们不相互依赖。