Sign in Join
Wiki copytemporary

Revision 2 of 5, by WikiArchive on 11-4-2026. The page as it is now.

@/fr

@

L'opérateur d'adessage @ retourne l'adresse d'une variable, d'une procédure ou d'une fonction.

L'opérateur d'adresse @ renvoie l'adresse d'un identifiant associé à une adresse (généralement une variable ou une routine, mais aussi une étiquette).

Normalement, la valeur que @ renvoie est un pointeur non typé. Si vous gérez beaucoup de pointeurs et que vous souhaitez atténuer les problèmes de transmission de références de cible de type incorrect, vous devez utiliser la directive {$ typedaddress on}.

Voici un exemple qui démontre ce qui produit avec des pointeurs non typés, du code valide et fonctionnel, mais qui génère sémantiquement un résultat erroné:

pascal
program untypedAddressDemo(input, output, stderr);
    
      procedure incrementIntByRef(const ref: PByte);
        begin
          inc(ref^);
        end;
      var
        foo: integer;
      begin
        foo := -1;
        incrementIntByRef(@foo);
        writeLn(foo);
      end.

Il était prévu d'obtenir 0 (zéro), mais le programme renvoie -256 à la place. Avec {$ typedaddress on}, la compilation échoue avec une erreur de type incompatible. Vous attendez généralement ce dernier comportement (échec de compilation) au lieu de perdre du temps avec des heures de débogage.

Autres remarques

pascal
En ASCII, le caractère @ (signe AT): a la valeur 64.

Read more


From the Free Pascal wiki, page "@/fr", as the Internet Archive kept it on 2024-07-14. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.