2016-10-04 16 views
0
#include <windows.h> 

int csOpsPrintDataInitialized = 0; 

void ObtainOpsPrintDataCritSect() 
{ 
    CreateCriticalSectionAsNeccessary(); 

    EnterCriticalSection(&csOpsPrintData); 
} // Hp fortify in visual studio 2013 reporting issue: Exception handling. 

但使用try catch它仍然報告相同的問題。如何在visual studio C++中使用try catch?

void ObtainOpsPrintDataCritSect_sol()] 
{ 
    try 
    { 
     EnterCriticalSection(&csOpsPrintData); 
    } 
    catch(char *msg) 
    { 
    } 
} 

惠普鞏固建議:可以通過兩種方式來避免此問題:

  • 包裹在一個try/catch塊調用EnterCriticalSection的()。

  • 調用函數InitializeCriticalSectionAndSpinCount()而不是InitializeCriticalSection()。這預先分配了EnterCriticalSection()使用的事件,而不是強制EnterCriticalSection()分配事件。

+0

你確定它說'try/catch'?我期望'__try/__ catch'。這兩者在意圖上相似,但'try'是C++,'__try'是Windows,'EnterCriticalSection'也是Windows。 – MSalters

回答

0

我認爲這是你應該忽略設防的建議,因爲在msdn狀態上EnterCriticalSection文件誤報:

不要處理可能的死鎖例外;相反,調試 應用程序。