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 :

Accès a un tableau dans une structure


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Par défaut Accès a un tableau dans une structure
    Bonjour, voici mon problème :
    Je voudrai accéder au tableau suivant dans la structure

    *****Fichier registre.h*****
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct Registre
    {
        int PIRval[3];
     
     
     
    };
    ****Fichier main.c*****
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "Includes/Registres.h"
     
    volatile struct Registre reg_main;
     
    int main(void)
    {
           reg_main.PIRval[1] = 0x23;
     
    };
    Mais impossible de compiler.
    Sauriez-vous m'expliquer pourquoi ?

    Merci d'avance

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Si ton compilateur ne veut pas compiler, c'est mieux de nous donner le ou les messages d'erreur pour t'expliquer pourquoi.

    Tu peux essayer de mettre 'typedef' devant 'struct' dans le .h ?

    Edition :
    *****Fichier registre.h*****
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "Includes/Registres.h"
    Erreur lors de la rédaction du message ou erreur dans le code ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 46
    Par défaut
    Effectivement sans message dur de savoir quelle est l'erreur sur laquelle on vous pointe en premier.

    A tout hasard si ce n'est pas fait, pensez à mettre un retour de valeur du même type que celui de votre fonction. Ici votre main doit renvoyer une donnée de type entier (int), il faut donc lui spécifier comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "Includes/Registres.h"
     
    volatile struct Registre reg_main;
     
    int main(void)
    {
           reg_main.PIRval[1] = 0x23;
     
           return (42);
     
    }<s>;</s>

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 62
    Par défaut
    Bonjour,
    Il faut aussi enlever le ';' après l'accolade fermante du main.

  5. #5
    Membre chevronné
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Par défaut
    Citation Envoyé par Omalab Voir le message
    Effectivement sans message dur de savoir quelle est l'erreur sur laquelle on vous pointe en premier.

    A tout hasard si ce n'est pas fait, pensez à mettre un retour de valeur du même type que celui de votre fonction. Ici votre main doit renvoyer une donnée de type entier (int), il faut donc lui spécifier comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "Includes/Registres.h"
     
    volatile struct Registre reg_main;
     
    int main(void)
    {
           reg_main.PIRval[1] = 0x23;
     
           return (42);
     
    }<s>;</s>
    terminer avec return 0; est la façon standard de terminer un programme en C et d'informer le système d'exploitation que le programme s'est terminé sans erreurs.

    par ailleurs, return n'étant pas une fonction, les parenthèses autour du chiffre sont inutiles.

    Comme cela a été dit, le ; à la fin de l'accolade fermante de main est à supprimer aussi.

    Cela dit, ces problèmes ne devraient pas être à l'origine d'erreurs de compilation, mais seulement d'éventuels warnings.

    Le code suivant, chez moi, compile sans erreurs ni warnings avec gcc -Wall :
    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 Registre
    {
      int PIRval[3];
    };
     
    volatile struct Registre reg_main;
     
    int main(void)
    {
      reg_main.PIRval[1] = 0x23;
     
      return 0;
    }
    S'il y a une erreur dans ta compilation de scarabdore, elle est probablement à mon sens due à la façon dont le header est inclus (faute de frappe, usage de majuscules / minuscules inapproprié, mauvais emplacement désigné), mais sans le message d'erreur, on est dans le brouillard, comme cela a été dit.

    Sinon, pourquoi définir la struct comme étant volatile ?


    Eks

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 46
    Par défaut
    Citation Envoyé par -Eks- Voir le message
    terminer avec return 0; est la façon standard de terminer un programme en C et d'informer le système d'exploitation que le programme s'est terminé sans erreurs.

    par ailleurs, return n'étant pas une fonction, les parenthèses autour du chiffre sont inutiles.

    Comme cela a été dit, le ; à la fin de l'accolade fermante de main est à supprimer aussi.
    Merci pour votre synthèse. Les parenthèses sont mises par habitude étant donné qu'il est souvent plus intéressant et rapide de renvoyer une expression plutôt qu'une variable. Elle sont ici inutiles mais je doute qu'elles puissent induire en erreur un débutant au point qu'il soit crucial de le souligner.

    En parlant de choses inutiles, les "Comme cela a été dit" sont un peu luxueux. Sur un sujet de 4 posts, l'auteur prendra certainement le temps de tous les lire, il n'y a pas de honte à faire une réponse courte pour proposer une idée .

    -Omalab

Discussions similaires

  1. Utilisation d'un tableau dans une structure
    Par Angelique64 dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/06/2009, 11h05
  2. allocation d'un tableau dans une structure
    Par Klaine dans le forum Débuter
    Réponses: 3
    Dernier message: 02/04/2008, 23h51
  3. Problème de tableau dans une structure
    Par zarbiman dans le forum Réseau
    Réponses: 5
    Dernier message: 15/12/2007, 18h21
  4. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  5. Tableau dans une structure
    Par Elstak dans le forum C
    Réponses: 3
    Dernier message: 25/04/2007, 11h45

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