Aracılığıyla paylaş


Derleyici Uyarısı (Düzey 1) C4731

'pointer' : satır içi derleme kodu tarafından değiştirilen çerçeve işaretçisi yazmaç 'register'

Açıklamalar

Çerçeve işaretçisi yazmaç değiştirildi. Yazmaçları satır içi derleme bloğunuza veya çerçeve değişkeninize (değiştirilen yazmaç bağlı olarak yerel veya parametre) kaydedip geri yüklemeniz gerekir, aksi durumda kodunuz düzgün çalışmayabilir.

Example

Aşağıdaki örnek C4731 oluşturur:

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

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

EBP, çerçeve işaretçisidir (FPO'ya izin verilmez) ve değiştiriliyor. Daha sonra başvurulduğunda p , öğesine göre EBPbaşvurulur. Ancak EBP kodun üzerine yazılmıştır, bu nedenle program düzgün çalışmaz ve hatta hataya neden olabilir.