Partilhar via


Aviso do compilador (Nível 1) C4731

'ponteiro' : registro de ponteiro do quadro 'register' modificado por código de montagem embutido

Observações

Um registro de ponteiro de quadro foi modificado. Você deve salvar e restaurar o registro em seu bloco de montagem embutido ou variável de quadro (local ou parâmetro, dependendo do registro modificado), ou seu código pode não funcionar corretamente.

Example

O exemplo a seguir gera C4731:

// C4731.cpp
// compile with: /W1 /LD
// processor: x86
// C4731 expected
void bad(int p) {
   __asm
   {
      mov ebp, 1
   }

   if (p == 1)
   {
      // ...
   }
}

EBP é o ponteiro do quadro (FPO não é permitido) e está sendo modificado. Quando p é referenciado posteriormente, é referenciado em relação a EBP. Mas EBP foi substituído pelo código, então o programa não funcionará corretamente e pode até mesmo falhar.