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


Ошибка компилятора C2422

недопустимая переопределение сегмента в "операнде"

Замечания

Встроенный код сборки неправильно использует оператор переопределения сегмента (двоеточие) на операнде. Возможные причины:

  • Регистр, предшествующий оператору, не является регистром сегмента.

  • Регистр, предшествующий оператору, не является единственным регистром сегмента в операнде.

  • Оператор переопределения сегмента отображается в операторе косвенного обращения (квадратные скобки).

  • Выражение, следующее за оператором переопределения сегмента, не является непосредственным операндом или операндом памяти.

Example

В следующем примере создается C2422:

// C2422.cpp
// processor: x86
int main() {
   _asm {
      mov AX, [BX:ES]   // C2422
      mov AX, ES   // OK
   }
}