# V580. Suspicious explicit type casting. Consider inspecting the expression.

Анализатор обнаружил подозрительное явное приведение типа. Это может быть ошибкой или потенциальной ошибкой.

Рассмотрим пример:

    DWORD errCode = 0;
    void* dwErrParams[MAX_MESSAGE_PARAMS];
    dwErrParams[0] = *((void**)&errCode);

Код содержит 64-битную ошибку. Тип 'DWORD' превращается в тип 'void *' . Этот код некорректно работает в 64-битных системах, где размер указателя не совпадает с размером типа DWORD. Корректный вариант:

    DWORD_PTR errCode = 0;
    void* dwErrParams[MAX_MESSAGE_PARAMS];
    dwErrParams[0] = (void *)errCode;

Данная диагностика классифицируется как:

CWE-843 CERT-EXP39-C