Avertissement du compilateur (niveau 1) C4733
Affectation inline asm à « FS :0 » : gestionnaire non inscrit en tant que gestionnaire sécurisé
Une fonction modifiant la valeur à FS :0 pour ajouter un nouveau gestionnaire d’exceptions peut ne pas fonctionner avec des exceptions sécurisées, car le gestionnaire peut ne pas être inscrit en tant que gestionnaire d’exceptions valide (voir /SAFESEH).
Pour résoudre cet avertissement, supprimez la définition FS :0 ou désactivez cet avertissement et utilisez . SAFESEH pour spécifier les gestionnaires d’exceptions fiables.
L’exemple suivant génère l’erreur C4733 :
// C4733.cpp
// compile with: /W1 /c
// processor: x86
#include "stdlib.h"
#include "stdio.h"
void my_handler()
{
printf("Hello from my_handler\n");
exit(1);
}
int main()
{
_asm {
push my_handler
mov eax, DWORD PTR fs:0
push eax
mov DWORD PTR fs:0, esp // C4733
}
*(int*)0 = 0;
}