Dela via


Kompilatorvarning (nivå 1) C4731

"pekare" : rampekare registrerar "register" som ändrats av infogad sammansättningskod

Anmärkningar

Ett bildrutepekarregister ändrades. Du måste spara och återställa registret i det infogade sammansättningsblocket eller ramvariabeln (lokal eller parameter, beroende på vilket register som ändrats), eller så kanske koden inte fungerar korrekt.

Example

I följande exempel genereras C4731:

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

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

EBP är rampekaren (FPO tillåts inte) och den ändras. När p refereras senare refereras det till i förhållande till EBP. Men EBP har skrivits över av koden, så programmet fungerar inte korrekt och kan till och med fel.