建議使用 Visual Studio 2017

C26112

 

發行︰ 2016年7月

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

警告 C26112: 呼叫端不可以在呼叫 <func> 之前保留任何鎖定。

加上一個呼叫端的附註 _Requires_no_locks_held_ 不可在呼叫函式之前持有任何鎖定的前置條件。 警告 C26112 會在當函式在呼叫另一個函式之前不釋放所有鎖定時發行。

因為 _Requires_no_locks_held_ 的先決條件被對 NoLocksAllowed 的呼叫違反了此鎖定的區段中,下列範例會產生警告 C26112。

  
typedef struct _DATA   
{  
    CRITICAL_SECTION cs;  
} DATA;  
  
_Requires_no_locks_held_   
  
void NoLocksAllowed(DATA* p)  
{  
     // Lock sensitive operations here  
}  
  
void LocksHeldFunction(DATA* p)   
{   
    EnterCriticalSection(&p->cs);   
    NoLocksAllowed(p); // Warning C26112  
    LeaveCriticalSection(&p->cs);  
}  
  

顯示: