我正在使用C++。如何在C++中使用函数初始化静态成员
在.h
:
static CRITICAL_SECTION g_CS;
在.cpp
:
CRITICAL_SECTION CQCommon::g_CS;
,但我想在一个静态函数使用
QGUID temp;
EnterCriticalSection(&g_CS);
temp = g_GUID++;
LeaveCriticalSection(&g_CS);
return temp;
。 如何调用InitializeCriticalSection(PCRITICAL_SECTION pcs);
?
我可以使用下面的一个:
QGUID func(XXX)
{
static {
InitializeCriticalSection(&g_CS);
}
QGUID temp;
EnterCriticalSection(&g_CS);
temp = g_GUID++;
LeaveCriticalSection(&g_CS);
return temp;
}
我怎样才能应用后调用DeleteCriticalSection(&g_CS)
离开?
使用MFC,看起来CCriticalSection是一个解决方案。
把g_CS在头文件中的变量声明击败作出的目的,静态的(除非它是一个静态类成员) – 2009-08-27 02:04:15
我很抱歉,我不明白,你能给我一个样本在我的问题? 我总是用这种方式声明静态成员,看来工作 – user25749 2009-08-27 02:21:24
当应该只从一个编译单元访问变量时,变量值得声明为静态的;您将一个变量声明放在头文件中的原因相反:当您想在多个编译单元中使用它时。另外,在没有extern说明符的情况下将声明放入头文件时,只要两个编译单元包含该头文件,就会在链接期间导致重复的定义。 – 2009-08-27 02:28:35