begin process at 2012 05 30 01:41:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Problème d'alignement de données


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème d'alignement de données

vendredi 15 décembre 2006 à 18:43:12 | Problème d'alignement de données

julienbj


J'ai décrit sous forme d'un champ de bit l'en tete des données pour un protocole de communication sans fil basé sur le 802.15.4.

Voici cette description:
typedef struct
{
    unsigned type            : 3;
    unsigned security        : 1;
    unsigned frame_pending    : 1;
    unsigned ack_request    : 1;
    unsigned intra_pan        : 1;
    unsigned                : 1;
    unsigned                : 2;
    unsigned dest_addr_mode    : 2;
    unsigned                : 2;
    unsigned src_addr_mode    : 2;
} FCF_bits;

typedef union
{
    FCF_bits bits;
    PHY_UINT16 val;
    struct
    {
        PHY_UINT8 high;
        PHY_UINT8 low;
    } byte;
} FCF;

Lorsque j'affiche le contenu de cet en tete, je vois 4 octets qui s'affichent alors que j'en attend seulement 2.
J'ai essayer en encadrant le tout de #pragma pack(1) et #pragma pack(), mais rien à faire.

sizeof(FCF_bits) vaut 4. Sauriez-vous pourquoi? (et par la meme occasion, comment résoudre ce problème?)

Merci d'avance.

Vive le C
Savon

vendredi 15 décembre 2006 à 23:33:25 | Re : Problème d'alignement de données

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
et voila du sizeof = 2

typedef struct _FCF_bits {
  BYTE type            :3;
  BYTE security        :1;
  BYTE frame_pending   :1;
  BYTE ack_request     :1;
  BYTE intra_pan       :1;
  BYTE                 :1;
  BYTE                 :2;
  BYTE dest_addr_mode  :2;
  BYTE                 :2;
  BYTE src_addr_mode   :2;
} FCF_bits;

le type par défaut est int si non précisé donc compilo les range par force à des adresses accessibles sans exception d'alignement.
Avec des membres déclarés 'octet', le prob ne se pose plus car toute adresse sera valide.

ciao...
BruNews, MVP VC++
vendredi 15 décembre 2006 à 23:42:07 | Re : Problème d'alignement de données

yann_lo_san

A mon avis c'est a cause du padding (remplissage) des champs non nommés. Ils te font aller au prochain alignement. essayes de les nommer. (pas sur quant même parceque c'est plutot quant on les mets à zero, ex unsigned  : 0;).
Tchao.

samedi 16 décembre 2006 à 03:47:08 | Re : Problème d'alignement de données

julienbj


Merci brunews, effectivement le probleme était bien la.

Vive le C
Savon



Cette discussion est classée dans : problème, données, bits, unsigned, fcf


Répondre à ce message

Sujets en rapport avec ce message

Problème : Récupération des données d'un Buffer pour mettre dans une EditBox [ par Memerosti ] BonjourMon problème est le suivant : J'ai ouvert un fichier, lu ses données, et jusque là ça va. Mais ensuite je voudrais récupérer ces données, pour gros problème base de données [ par skysee ] Salut,j'ai un gros problème avec mase de données.J'utillise le composant ATL pour me connecter à ma base de données.Donc il mes génère 2 classes dont [visual C++] problème (très bizarre) avec un CString [ par drinkmilk ] Bonjour, je fait une requête sur une base access. Je récupère les données ainsi: <T Problème de mise à jour de ma base de données [ par lam_insat ] Mon application consiste une application multi-tierd.Le probléme est que les modifications que fait un client ne parviennent pas à un deuxieme que lor Prob avec fmod [ par gbourgeois0019 ] Salut tout le monde,J'ai présentement un problème assez bizarre ! Le bout de code qui me cause problème est le suivant.unsigned int SOUND_MGR::GetLeng problème avec mysql sous visual studio 2005 [ par Apache_31 ] Bonjour , je cherche quelq'un qui pourrait m'aidé pour utiliser une base de données MySQL avec une application visual studio 2005 en C++ . En se momen Capturer un son [ par Guegue85 ] Bonjours amis du C,Voici mon problème : est-il possible de créer un programme en C qui capture les données de l'entree micro de la carte son en temps Problème WinSock... [ par Vermifuge ] Bonjour tout le monde, j'ai une réaction étrange de WinSock, et comme je trouve pas j'ai pensé que quelqu'un avait déjà eu ce problème ( c'est la prem Problème de compilation [ par rudhf ] Bonjour,J'ai pris un projet d'un livre compilé avec VC++ 1.5 qui est 16 bits et j'essaye de le compiler avec VC++ 6 qui est 32 bits mais quand il arri Problème avec IO Comletion Port [ par darktealk ] Bonjour,    Mon système est bien en place tout fonctione, seulement à un moment après plusieurs cycles de lecture/écriture sur les sockets. La fonctio


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales