Share via


Upozornění kompilátoru (úroveň 1) C4731

'pointer' : frame pointer register 'register' modified by inline assembly code

Registr ukazatele rámce byl změněn. Je nutné uložit a obnovit registr ve vložené blok sestavení nebo proměnné rámce (místní nebo parametr v závislosti na upraveném registru) nebo váš kód nemusí správně fungovat.

Následující ukázka vygeneruje C4731:

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

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

EBP je ukazatel rámce (FPO je zakázán) a upravuje se. Pokud p je později odkazován, je odkazován vzhledem k EBP. Kód ale EBP přepsal, takže program nebude správně fungovat a může dokonce i chybovat.