Re: Discriminants.
Ludovic Brenta <[email protected]>
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
Pascal writes: > Bonjour, petite question sur les discriminants: > Je souhaite écrire: > type TÉléments is array (Natural range <>) of Integer; > type Typ (Max : Natural := 256) is record > Éléments : TÉléments(0..Max-1):=(others=>0); > end record; > X : Typ(20); > Mais GNAT me renvoi : > "discriminant in constraint must appear alone" > > Bien, je n'ai pas trouvé cette contrainte dans le § "3.7 > Discriminants" du manuel, mais les exemples proposés sont conformes. > > Bien, je pourrais évidemment déclarer: > type TÉléments is array (Natural range <>) of Integer; > type Typ (Max : Natural := 255) is record > Éléments : TÉléments(0..Max):=(others=>0); > end record; > X : Typ(20-1); > > Mais, pourquoi ne pas pouvoir écrire Max-1 ? ARM 3.7(19): A constraint that appears within the definition of a discriminated type depends on a discriminant of the type if it names the discriminant as a bound or discriminant value. Il n'y a donc que deux formes possibles: soit le discriminant du type englobant est l'une des bornes du composant, soit il est le discriminant du composant. Il ne peut donc pas apparaître comme l'un des éléments d'une expression. Attention aussi avec ta définition de type, elle peut occuper 2 Go de mémoire. Voir http://groups.google.com/group/fr.comp.lang.ada/msg/ab5622e10628fce9 et les réponses. -- Ludovic Brenta. _______________________________________________ Site WWW de l'association Ada-France: http://www.ada-france.org/ [email protected] http://www.ada-france.org/mailman/listinfo/ada-france