Avertissement du compilateur (niveau 3) C4414
'function' : raccourci vers la fonction convertie en proche
Les raccourcis courts génèrent des instructions compactes qui se branchent vers une adresse dans une plage limitée à partir de l’instruction. L’instruction inclut un décalage court qui représente la distance entre le saut et l’adresse cible, la définition de la fonction. Lors de la liaison d’une fonction peut être déplacée ou soumise à des optimisations du temps de liaison qui entraînent le déplacement de la fonction hors de la plage accessible à partir d’un décalage court. Le compilateur doit générer un enregistrement spécial pour le saut, ce qui nécessite que l’instruction jmp soit NEAR ou FAR. Le compilateur a effectué la conversion.
Par exemple, le code suivant génère l’erreur C4414 :
// C4414.cpp
// compile with: /W3 /c
// processor: x86
int DoParityEven();
int DoParityOdd();
unsigned char global;
int __declspec(naked) DoParityEither()
{
__asm
{
test global,0
jpe SHORT DoParityEven // C4414
jmp SHORT DoParityOdd // C4414
}
}