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 :

Essais de structure composite


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut Essais de structure composite
    Bonjour à tous,

    Je recherche un moyen de déclarer un int16 et de pouvoir indifféremment y accéder sur 16 bits ou bien via l'octet de pois faible et l'octet de poids fort.

    Par exemple en pascal la syntaxe aboslute permet de faire coincider les déclarations.

    Mais en C mon compilateur gcc jette l'utilisation de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    union composite {
    	uint16 mot;
    	struct {
    		char lo;
    		char hi;
    	} composite;
    };
    union composite Temp2;
     
     
    ---
         CharLCD_PrintInt8(Temp2.hi);	
    ----
    Code erreur error: 'union composite' has no member named 'hi'

    Merci du coup de main

    P.G

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 473
    Par défaut
    Ce n'est pas « Temp2.hi » qu'il faut écrire mais « Temp2.composite.hi ». Et ce parce que tu as défini une union nommée composite qui contient un champ qui s'appelle également composite (la structure).

    À noter que dans le premier cas, il s'agit de « union composite », donc un nom de type, et dans le second, c'est le nom de l'instance d'une structure qui, elle, est anonyme.

  3. #3
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut
    Hello,

    Merci pour ta réponse rapide le bilan donne :

    Lecture d'un capteur de Température via bus I2C avec PSoC5
    (µContrôleur analogique et numérique noyau ARM 32 bits 80MHz
    programmation en c via GCC )

    Affichage et traitement local puis envoi via la liaison série
    (c'est là que ton aide a été précieuse pour débloquer la dernière difficulté)

    sur une IHM programmée en Delphi.

    Super

    Merci beaucoup

    P.G

  4. #4
    Membre éprouvé Avatar de nowahn
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 84
    Par défaut
    Boujour,

    Il me semble que si tu ne donne pas de nom à ta variable membre struct, tu peux accéder à ses membres directement:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    union composite {
    	uint16 mot;
    	struct {
    		char lo;
    		char hi;
    	} /* Pas de nom ici */;
    };
    union composite Temp2;
     
     
    ---
         CharLCD_PrintInt8(Temp2.hi); /* Ça marche */
    ----

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 473
    Par défaut
    Citation Envoyé par nowahn Voir le message
    Boujour,

    Il me semble que si tu ne donne pas de nom à ta variable membre struct, tu peux accéder à ses membres directement:
    Je ne connaissais pas mais, apparemment, c'est du C11 : http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html . J'obtiens un warning même en C99.

    Pas conseillé, donc.

  6. #6
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut Essais
    Bonjour à vous deux,

    Bon l'essai proposé de ne pas donner de nom à la structure
    fonctionne dans mon cas avec le C utilisé dans PSoC Creator.

    Pour info pour enseigner la chose il est peit-être plus cohérent
    de garder la structure nommée, si en plus ce n'est pas portable

    Merci

    A +

    P.G

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

Discussions similaires

  1. diagramme de structure composite
    Par bbodian dans le forum Autres Diagrammes
    Réponses: 1
    Dernier message: 14/02/2013, 22h56
  2. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  3. [tables systèmes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 23/03/2006, 13h24
  4. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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