# V202. Explicit conversion from memsize type to 32-bit integer type.

Оно информирует о наличии явного приведения целочисленного memsize типа к 32-битному типу, что может маскировать одну из следующих ошибок: V103, V107, V110. Вы можете обратиться к приведенному списку предупреждений, чтобы выявить причину появления диагностирующего сообщения V202.

Ранее предупреждение V202 распространялось и на приведение указателя к 32-битному целочисленному типу. Такие приведения весьма опасны. Поэтому они были выделены в отдельное диагностическое правило V205.

Учтите, что, скорее всего, большинство предупреждений этого типа будет выдано на корректный код. Приведем несколько примеров корректного и некорректного кода, на который будет выдано данное предупреждение.

Примеры некорректного кода.

    size_t n;
    ...
    for (unsigned i = 0; i != (unsigned)n; ++i) {   //V202
      ...
    }

    UINT_PTR width, height, depth;
    ...
    UINT arraySize = UINT(width * height * depth);   //V202

Примеры корректного кода.

    const unsigned bits =
      unsigned(sizeof(object) * 8); //V202

    extern size_t nPane;
    extern HICON hIcon;
     BOOL result =
      SetIcon(static_cast<int>(nPane), hIcon); //V202

Дополнительные материалы по данной теме:

- 64-битные уроки. Урок 15. Паттерн 7. Упаковка указателей.