Discussion:
Attribut Address sur un tableau.
(trop ancien pour répondre)
Blady
2018-04-15 10:17:50 UTC
Permalink
Bonjour,

Soit les déclarations :

type TA is array (Positive range <>) of Float;
A : TA := (2.0, 3.14, 4.8);

Y a-t-il une différence entre les propositions suivantes ?

A'Address
et
A(A'First)'Address

Merci, Pascal.
Niklas Holsti
2018-04-15 10:45:51 UTC
Permalink
Post by Blady
Bonjour,
type TA is array (Positive range <>) of Float;
A : TA := (2.0, 3.14, 4.8);
Y a-t-il une différence entre les propositions suivantes ?
A'Address
et
A(A'First)'Address
RM 13.3(14), Implementation Advice: "For an array X, X'Address should
point at the first component of the array, ...".

Donc, ce n'est pas normatif, mais c'est probable que A'Address =
A(A'First)'Address.
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
J-P. Rosen
2018-04-15 15:15:14 UTC
Permalink
Post by Niklas Holsti
Post by Blady
Bonjour,
type TA is array (Positive range <>) of Float;
A : TA := (2.0, 3.14, 4.8);
Y a-t-il une différence entre les propositions suivantes ?
A'Address
et
A(A'First)'Address
RM 13.3(14), Implementation Advice: "For an array X, X'Address should
point at the first component of the array, ...".
Donc, ce n'est pas normatif, mais c'est probable que A'Address =
A(A'First)'Address.
Dans les premières versions d'Ada, on n'en disait rien. Par exemple, si
un tableau était précédé de ses bornes ("dope vector"), on pouvait
considérer que l'adresse du tableau était celle du bloc de bornes. Comme
ça a surpris pas mal de gens, on recommande que ce soit le premier
élément, mais par compatibilité ce n'est pas obligatoire.
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
Blady
2018-04-15 19:39:28 UTC
Permalink
Post by J-P. Rosen
Post by Niklas Holsti
Post by Blady
Bonjour,
type TA is array (Positive range <>) of Float;
A : TA := (2.0, 3.14, 4.8);
Y a-t-il une différence entre les propositions suivantes ?
A'Address
et
A(A'First)'Address
RM 13.3(14), Implementation Advice: "For an array X, X'Address should
point at the first component of the array, ...".
Donc, ce n'est pas normatif, mais c'est probable que A'Address =
A(A'First)'Address.
Dans les premières versions d'Ada, on n'en disait rien. Par exemple, si
un tableau était précédé de ses bornes ("dope vector"), on pouvait
considérer que l'adresse du tableau était celle du bloc de bornes. Comme
ça a surpris pas mal de gens, on recommande que ce soit le premier
élément, mais par compatibilité ce n'est pas obligatoire.
Merci, donc par compatibilité il vaut mieux écrire : A(A'First)'Address
pour avoir l'adresse du "début" (premier élément) du tableau.
Pascal.
g***@hotmail.com
2018-04-20 07:47:42 UTC
Permalink
Post by Blady
Merci, donc par compatibilité il vaut mieux écrire : A(A'First)'Address
pour avoir l'adresse du "début" (premier élément) du tableau.
Pascal.
Affirmatif!
Il y en a un certain nombre dans le binding OpenGL de GLOBE_3D, ça marche avec GNAT et ObjectAda et sous Linux, MacOS X et Windows.
Continuer la lecture sur narkive:
Loading...