2016-10-04 5 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 все еще сообщив такой же выпуск.Как использовать try catch в visual studio C++?

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

Hp укрепить рекомендацию: Эту проблему можно избежать двумя способами:

  • Wrap вызовы EnterCriticalSection() в Try/поймать блок.

  • Вызовите функцию InitializeCriticalSectionAndSpinCount() вместо InitializeCriticalSection(). Это предварительно назначает событие, которое использует EnterCriticalSection(), вместо того, чтобы заставлять EnterCriticalSection() выделять событие.

+0

Вы уверены, что это говорит 'try/catch'? Я бы ожидал '__try/__ catch'. Оба схожи в намерении, но 'try' - это C++,' __try' - это Windows, а 'EnterCriticalSection' - также Windows. – MSalters

ответ

0

Я думаю, что это ложный положительный результат, вы должны игнорировать рекомендацию в Fortify, поскольку документация по EnterCriticalSection на msdn состояниях:

Не беритесь возможное исключение тупиковой; вместо этого отлаживаем приложение .