Avertissement du compilateur (niveau 1) C4731
'pointeur' : registre de pointeur frame 'register' modifié par le code d’assembly inline
Un registre de pointeurs d’images a été modifié. Vous devez enregistrer et restaurer le registre dans votre bloc d’assembly inline ou variable frame (local ou paramètre, selon le registre modifié), ou votre code peut ne pas fonctionner correctement.
L’exemple suivant génère l’erreur C4731 :
// C4731.cpp
// compile with: /W1 /LD
// processor: x86
// C4731 expected
void bad(int p) {
__asm
{
mov ebp, 1
}
if (p == 1)
{
// ...
}
}
EBP est le pointeur d’image (FPO est interdit) et il est modifié. Quand p
elle est référencée ultérieurement, elle est référencée par rapport à EBP
. Mais EBP
a été remplacé par le code, de sorte que le programme ne fonctionnera pas correctement et peut même être défectueux.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour