adresse structure en C.
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

adresse structure en C.



  1. #1
    cedric300

    adresse structure en C.


    ------

    Bonjour;

    Je programme un pic sur MplabX.
    J'ai une structure du genre:

    Code:
    Strict MaStruc { 
      char donné1;
      char donné2;
      char donné3;
      int donnée4;
      char str[10];
    }
    Je dois l'enregistrer dans une eeprom.
    Ma question est cotée adressé des données sont-ils obligatoirement à la suite?
    Aujourd'hui j'enregistre les données séparément, donnée1 puis donnée 2, puis donnée3 ...
    Mais puis-je les envoyer en une seule fois? comme si il s'agissait d'une seule chaine de 15 caracteres?
    (jusqu'à persent ils ont toujours ete à la suite mais est-ce normale ou un coup de chance? )
    Merci.

    -----
    Dernière modification par gienas ; 29/03/2012 à 09h19. Motif: Ajouté la balise code, obligatoire pour les programmes

  2. #2
    erff

    Re : adresse structure en C.

    Salut

    Normalement oui, les données sont à la suite, cependant, il y a des exceptions (qui dépendent du processeur)
    - En ce qui concerne certains processeurs de PC 32 bits, je sais que par exemple, les données de type short ne peuvent être stockées que sur une adresse paire
    http://www.pps.jussieu.fr/~rifflet/e...tml#alignement
    Donc si une structure est déclarée comme ceci :
    Code:
    struct MaStruct{
    short a;
    char b;
    };
    Alors la taille sera de 2+1 = 3 octets
    Tandis que
    Code:
    struct MaStruct{
    char b;
    short a;
    };
    Occupera 2+2 = 4 octets, car si le char est stocké sur une adresse paire, alors le stockage de a ne sera possible que sur la prochaine adresse paire.

    En principe, si on déclare en premier les types les + gros (les type complexes, les double etc...) on doit pouvoir se mettre à l'abris de tels comportements.

    Ce genre de comportement est très variable d'un processeur à l'autre...donc il faut se documenter ... Mais à mon avis (je ne suis pas connaisseur en prog de µC) c'est une mauvaise habitude de compter sur cette propriété d'alignement des données.

    En attendant un autre avis....
    Dernière modification par erff ; 28/03/2012 à 19h33.

  3. #3
    jiherve

    Re : adresse structure en C.

    Bonsoir,
    En effet cela dépend pas mal du processeur et du compilateur, donc pas de réponse générale, par ex avec un PPC l’alignement est d'un point de vue hardware normalement accessoire mais le résultat dépend du compilateur.
    Attention à l'utilisation d'union là c'est encore plus surprenant.
    JR
    l'électronique c'est pas du vaudou!

  4. #4
    cedric300

    Re : adresse structure en C.

    Merci de vos réponse ,
    Je vais donc jouer la carte de la prudence.
    Merci A+

  5. A voir en vidéo sur Futura
  6. #5
    gienas
    Modérateur

    Re : adresse structure en C.

    Bonjour cedric300 et tout le groupe

    Citation Envoyé par cedric300 Voir le message
    ... Je vais donc jouer la carte de la prudence ...
    Lors d'une première lecture, trop superficielle, j'avais mal compris l'objet exact de ta question. En lisant ta réponse, j'ai relu.

    J'aurais tendance à dire que c'est obligatoire en C. Les acrobaties que l'on peut se permettre en langage machine, et parfois en assembleur, ne peuvent pas se faire en langage évolué.

    Comme le soulignent mes illustres prédécesseurs, rien n'est garanti, mais si, par (mal)chance cela venait à fonctionner, cela pourrait ne pas être répétitif, et surtout non portable.

    En C, on ne doit rien supposer, on doit respecter les règles, et coder proprement. Tout écart peut s'avérer être une bombe à retardement.

Discussions similaires

  1. adresse IP
    Par invite849f6457 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 8
    Dernier message: 19/11/2010, 18h30
  2. adresse d'une structure de donnée
    Par bird12358 dans le forum Électronique
    Réponses: 3
    Dernier message: 02/08/2009, 11h08
  3. adresse IP
    Par invite5dacab03 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 7
    Dernier message: 13/01/2005, 23h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.