Поделиться через


C26101

предупреждение C26101: Не удается правильно использовать заблокированную операцию для переменной <var>.

API Windows предоставляют разнообразные заблокированные операции.Примечание _Interlocked_ указывает, что к переменной следует обращаться только через заблокированную операцию.Предупреждение C26101 выдается, когда доступ не согласован с примечанием _Interlocked_.

Пример

Следующий пример приводит к появлению предупреждения C26101, поскольку происходит нарушение контракта _Interlocked_.

CRITICAL_SECTION cs;
typedef struct _DATA 
{
    _Interlocked_ LONG data;
} DATA;

void Safe(DATA* p) 
{
    InterlockedIncrement(&p->data); // OK
}

void Unsafe(DATA* p) 
{
    p->data += 1; // Warning C26101
    EnterCriticalSection(&cs);
    LeaveCriticalSection(&cs);
}