IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Spécifier l'alignement des champs d'un record avec tableaux discriminés


Sujet :

Ada

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Spécifier l'alignement des champs d'un record avec tableaux discriminés
    Bonjour,

    J'ai un record discriminé et j'aimerais m'assurer que l'alignement se fait bien sur 32 bits pour tous les champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      type Bit is range 0 .. 1;
      for Bit'Size use 1;
      type Bit_Array is array (Integer range <>) of Bit;
      for Bit_Array'Component_Size use 1;
     
      type Rec (MSB_A, MSB_B : Integer) is
        record
          A : Bit_Array (0 .. MSB_A);
          B : Bit_Array (0 .. MSB_B);
          C : Integer;
        end record;
    En gros ce que j'aimerais faire si A et B ne feraient pas partie du record :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      for A'Alignment use Integer'Alignment;
      for B'Alignment use Integer'Alignment;
    Je n'ai pas besoin de spécifier la taille des champs mais juste l'alignement. J'ai aussi pensé à rajouter la clause "for Bit_Array'Alignment use Integer'Alignment;" après la déclaration du type Bit_Array, mais j'ai vu que ça n'a eu aucun effet sur les variables Bit_Array.

    Merci pour vos réponses
    Jonas

  2. #2
    Membre averti Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Points : 383
    Points
    383
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    with Ada.Text_Io;
     
    procedure TestAlign is
     
       type Bit is range 0 .. 1;
       for Bit'Size use 1;
       type Bit_Array is array (Integer range <>) of Bit;
       for Bit_Array'Component_Size use 1;
       for Bit_Array'Alignment use Integer'Alignment;
     
       type Rec (MSB_A, MSB_B : Integer) is
          record
    	 A : Bit_Array (0 .. MSB_A);
    	 B : Bit_Array (0 .. MSB_B);
    	 C : Integer;
          end record;
     
       Mon_Rec : Rec(9, 11);
     
    begin
       Ada.Text_Io.Put_Line(Integer'Image(Mon_Rec'Size));
       Ada.Text_Io.Put_Line(Integer'Image(Mon_Rec.A'Alignment));
       Ada.Text_Io.Put_Line(Integer'Image(Mon_Rec.B'Alignment));
       Ada.Text_Io.Put_Line(Integer'Image(Mon_Rec.C'Alignment));
       Ada.Text_Io.Put_Line(Integer'Image(Mon_Rec'Alignment));
    end TestAlign;
    Personnellement, ça me retourne :
    Donc c'est bien aligné sur 4*Storage_element'Size mais c'est packé.
    Ceci dit, si je dépasse la taille de 32 bits pour les tableaux, par exemple avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Mon_Rec : Rec(31, 11);
    J'obtiens bien :
    Bizarre !
    Ou alors, c'est que j'ai fait une bourde

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/02/2010, 12h38
  2. Réponses: 9
    Dernier message: 10/03/2007, 08h39
  3. [css] aligner des champs verticalement
    Par tiger33 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/09/2006, 14h33
  4. Ajouter des champ dans une table avec une procedure sp
    Par Abdou1 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/07/2006, 18h32
  5. [Tableaux] Alignement des champs d'un formulaire
    Par jack554 dans le forum Langage
    Réponses: 7
    Dernier message: 15/09/2005, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo