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

Linux Discussion :

problème d'alignement sous codeblock


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 14
    Points : 17
    Points
    17
    Par défaut problème d'alignement sous codeblock
    Bonjour,

    Je fais un programme et j'ai un petit problème.

    J'ai une structure :
    typedef struct {
    unsigned char numEsclave;
    char adresseIPSollae[MAXLONGNOMMACHINE];
    uint16_t portSollae;
    ...
    }SOLLAEcnx;
    extern SOLLAEcnx *entiteSOLLAE[];

    Dans un sous programme, je met a jour avec succès ma variable :
    entiteSOLLAE[numEsclave]->portSollae=portSollae;

    Sauf que plus tard, entiteSOLLAE[numEsclave]->portSollae n'a plus sa valeur assigné.

    Par contre, si je déplace portSollae dans ma structure ou que je met avant trois octets, ça refonctionne.
    Ais-je négligé quelque chose ou est-ce un bogue ?


    Je travaille sous codeblock 8.02 avec GNU CCC compiler.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    je pense que ceci pourra t aider http://sig9.com/articles/gcc-packed-structures

    Ton compilateur ajoute des bits de padding pour être aligné correctement (probablement en 32bits).

    Ce que je te conseille c est de déclarer en premier dans ta structure ceux qui prennent le plus de place, pour que si alignement il y a, il soit fait a la fin (les long, les short puis les char).

    Dans cet exemple, deux bits de padding seront rajoutés a la fin de la structure par le compilo

    taille physique : 22bytes
    taille réelle : 24bytes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct{
     u64 val_u64;
     u32 val_u32;
     s32 val_s32;
     u16 val_u16;
     s16 val_s16;
     u8 val_u8;
     s8 val_s8;
    } la_struct;


    Je ne t assure pas que ton problème vient de là mais c est une piste a suivre

Discussions similaires

  1. Problème d'alignement sous Word
    Par offal dans le forum Word
    Réponses: 2
    Dernier message: 04/12/2014, 05h56
  2. Problème d'alignement sous Firefox
    Par Zhato dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 17/01/2011, 15h48
  3. Problème de compilation de projets Ogre sous CodeBlocks - Vista
    Par Verbalinsurection dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 08/10/2007, 22h17
  4. Problème d'alignement sous IE
    Par dream_of_australia dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 05/07/2007, 22h31
  5. Problème d'alignement différent sous IE et FireFox
    Par GTJuanpablo dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 23/06/2007, 14h37

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