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

 C Discussion :

initialisation de structure "à la volée" pour une variable unique


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 69
    Points : 68
    Points
    68
    Par défaut initialisation de structure "à la volée" pour une variable unique
    Bonjour,

    J'ai une array en format 8b avec des données de différents formats suivant un indicatif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    uint8_t donnees[] = {1, 50, 2, 60, 125, 1, 72, 3, 80};
    Actuellement j'utilise un parser de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for (uint8_t a = 0; a < sizeof(donnees); a++) {
     if ((donnees[a] == 1) || (donnees[a] == 3)) {
      //donnees 8b
      a++;
     }
     
     if (donnees[a] == 2) {
      //donnees 16b
      a = a +2;
     }
    }
    Je m'étais dit que cela serait plus propre d'utiliser des structures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    struct donnees_8b {
     uint8_t indicatif;
     uint8_t valeur;
    }
     
    struct donnees_16b {
     uint8_t indicatif;
     uint16_t valeur;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    switch (donnees[a]) {
     case 1:
     case 3: {
      struct donnees_8b my_struct;
      break;}
     case 2: {
      struct donnees_16b my_struct;
      break;}
     }
    }
     
    memcpy(&my_struct, &donnees[a], sizeof(my_struct));
    Sauf que cela me dit que my_struct n'est pas déclaré. J'ai donc tenté de déclarer avant, mais cela ne me redéfinie par la structure. my_struct reste sur la version 8b :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    struct donnees_8b my_struct;
    switch (donnees[a]) {
     case 1:
     case 3: {
      struct donnees_8b my_struct;
      break;}
     case 2: {
      struct donnees_16b my_struct;
      break;}
     }
    }
     
    memcpy(&my_struct, &donnees[a], sizeof(my_struct));
    J'ai cherché et je n'arrive pas à comprendre si c'est parce que mon utilisation de structure est erronnée, à savoir que le compilateur l'utilise de manière static lors de son initialisation ou bien qu'il y a une autre raison ?

    Merci d'avance,

  2. #2
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 042
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 042
    Points : 8 252
    Points
    8 252
    Par défaut
    Toutes variables déclarées dans un bloc n'existe que dans ce bloc et cache les variables du même nom déclarées en dehors du bloc. Voir un cours sur la portée des variables.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 69
    Points : 68
    Points
    68
    Par défaut
    oh mon dieu, je m'auto /facepalm

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Obtenir le nombre de valeurs non manquantes pour une variable
    Par marie mouse dans le forum SAS Base
    Réponses: 5
    Dernier message: 14/12/2007, 17h33
  2. Masquer des items pour une variable d'un tableau croisé dynamique en VBA
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/10/2007, 16h35
  3. UnboundLocalError pour une variable
    Par piotrr dans le forum Général Python
    Réponses: 3
    Dernier message: 04/04/2007, 12h49
  4. 2 valeurs possibles pour une variable : méthode Seek
    Par Corinne4775 dans le forum Access
    Réponses: 8
    Dernier message: 12/02/2007, 19h00
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h22

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