我的问题如下:为什么易失静态成员初始化生成重定义编译错误?
我有一个类与静态计数器。 我把这个计数器设置为volatile,因为我在多线程环境中使用了这个变量。
class.h
class myClass
{
public:
volatile static int mCounter;
(...)
};
class.cpp
int myclass::mCounter = 0;
在CPP文件,我初始化它,我获得以下编译错误:
'mCounter' : redefinition; different type modifiers
为什么?
在此先感谢。
'volatile'在并发性方面没有任何**。你的程序很可能是错误的。 – 2013-02-11 11:56:59
我对每个处理器都有专用的缓存,挥发性单词不能确保从内存中读取值而不是这些缓存中的一个? – 2013-02-11 12:05:16
你试图解决什么是你的真正问题?是不止一个线程更新'mCounter'?如果是这样,你需要的不仅仅是“volatile”。 – 2013-02-11 12:08:12