编译器错误 C2422
“操作数”中的非法段替代
内联程序集代码错误地在操作数上使用段替代运算符(冒号)。 可能的原因包括:
运算符前面的寄存器不是段寄存器。
运算符前面的寄存器不是操作数中唯一的段寄存器。
段替代运算符出现在间接运算符(括号)中。
段替代运算符后面的表达式不是即时操作数或内存操作数。
以下示例生成 C2422:
// C2422.cpp
// processor: x86
int main() {
_asm {
mov AX, [BX:ES] // C2422
mov AX, ES // OK
}
}