Bonjour !
Par défaut, le compilateur choisit automatiquement un appel long ("FAR", avec changement de segment de code) lorsqu'il doit appeler une routine contenue dans une autre unité et un appel court ("NEAR", dans le même segment de code) pour les routines contenues dans la même unité.
{$F+} force simplement le compilateur à créer une procédure ou fonction FAR là où il devrait automatiquement créer une NEAR.
Un exemple : on peut écrire une petite routine pour modifier le comportement par défaut du programme en cas d'erreur d'allocation de mémoire dynamique.
1 2 3 4 5 6
| {$F+}
Function ERREUR_ALLOCATION (Taille : Word) : Integer;
Begin
ERREUR_ALLOCATION:=1;
End;
{$F-} |
L'adresse de cette routine doit être chargée dans la variable HeapError de l'unité System :
HeapError:=@ERREUR_ALLOCATION;
Eh bien, si l'on ne précise pas {$F+}, le compilateur va créer une fonction NEAR et ton programme va se planter immédiatement à la 1ère erreur d'allocation car il aura exécuté un appel FAR de cette fonction NEAR.
Partager