为什么易失性静态成员初始化会生成重新定义编译错误?

时间:2013-02-11 11:55:12

标签: c++ static initialization volatile redefinition

我的问题如下:

我有一个带静态计数器的类。 我将此计数器设置为volatile,因为我在多线程环境中使用此变量。

class.h

class myClass
{
 public:
 volatile static int mCounter;
 (...)
};

class.cpp

int myclass::mCounter = 0;

在CPP文件中,我初始化它,并获得以下编译错误:

'mCounter' : redefinition; different type modifiers

为什么?

先谢谢。

1 个答案:

答案 0 :(得分:4)

您还需要在该行上重复“volatile”。