共用方式為


編譯器警告 (層級 1) C4731

'pointer' :內嵌元件程式代碼修改的框架指標緩存器 'register'

已修改框架指標緩存器。 您必須在內嵌元件區塊或框架變數中儲存並還原緩存器(本機或參數,視已修改的緩存器而定),否則您的程式代碼可能無法正常運作。

下列範例會產生 C4731:

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

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

EBP 是框架指標(不允許 FPO),而且正在修改。 稍後參考時 p ,會參考相對於 EBP。 但 EBP 程式代碼已覆寫,因此程式將無法正常運作,甚至可能會發生錯誤。