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

Arduino Discussion :

Arduino Esp32 visibilité données typedef structuré


Sujet :

Arduino

  1. #1
    Membre averti
    Homme Profil pro
    Retraité passionné
    Inscrit en
    Mai 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité passionné
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2021
    Messages : 9
    Par défaut Arduino Esp32 visibilité données typedef structuré
    Bonjour, je suis débutant je ne comprends pas pourquoi je ne peux pas avoir la visibilité d'un alias typedef déclaré dans un .cpp alors que je peux avoir accès à une fonction de ce même .cpp Dans le fichier .ino j'ai une erreur de déclaration de Valeurs.Val1 Merci

    FICHIER .INO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <Arduino.h>
    #include "Rx.h"
     
    void setup() {
      Serial.begin(115200);
    }
    void loop() { 
      RxMsg() ;                              //Appel de la fonction d'affectation des valeurs
      Serial.println(Valeurs.Val1);
    }
    FICHIER RX.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #ifndef RX_H
    #define RX_H
    #include<Arduino.h>
     
    typedef struct 
    {
      int Val1;
      int Val2;
    }Data;
     
    void RxMsg(); 
    #endif
    FICHIER RX.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "Rx.h"  
    Data Valeurs;            //déclaration de l'alias Valeurs
    void RxMsg(void) 
    {
      Valeurs.Val1 = 0;    //affectation des Valeurs
      Valeurs.Val2 = 1;   
    }

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 120
    Billets dans le blog
    47
    Par défaut
    Bonjour,

    Dans le fichier .ino, il faut prévenir le compilateur que la variable Valeurs est définie ailleurs, dans un autre fichier.

    Il faut rajouter extern Data Valeurs; dans le fichier .ino, avant le setup().

  3. #3
    Membre averti
    Homme Profil pro
    Retraité passionné
    Inscrit en
    Mai 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité passionné
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2021
    Messages : 9
    Par défaut Merci
    Merci je vais revoir la portée et visibilité des variables Merci encore

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 883
    Par défaut
    Oui par défaut les variables ne sont visibles que dans le fichier (je simplifie) dans lesquelles elles sont définies.
    Si vous voulez les utiliser ailleurs, il faut les déclarer comme existant quelque part, c'est ce que permet de faire le mot clef extern.
    Lorsque vous faites cela, vous dites au compilateur

    "Je vais utiliser cette variable que tu ne connais pas, mais je te donne son nom et son type. Cela doit suffire pour compiler mon fichier. Ne t'inquiète pas, tu trouveras bien la variable lors de l'édition du lien."

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

Discussions similaires

  1. Visibilité de la structure en assembleur
    Par Shadew dans le forum C
    Réponses: 2
    Dernier message: 30/05/2011, 16h46
  2. typedef structure de données
    Par mdh12 dans le forum Débuter
    Réponses: 1
    Dernier message: 02/12/2009, 17h20
  3. probleme avec les typedef structure
    Par claire_cartier dans le forum Débuter
    Réponses: 7
    Dernier message: 21/11/2008, 09h38
  4. [VB.NET] Visibilité de variables, structures
    Par nicoarrf dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 31/07/2008, 15h43
  5. [access] outil qui me donne la structure de la bd
    Par mahboub dans le forum Access
    Réponses: 3
    Dernier message: 25/09/2006, 19h17

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