我正在使用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