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 :

'calcul' was not declared in this scope


Sujet :

Arduino

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut 'calcul' was not declared in this scope
    Bonjour,

    Je me débrouille habituellement à programmer sur Arduino, mais la je bute depuis plusieurs jours sur un problème que je ne comprend pas; j'ai tenté de chercher par notre ami (?) Google ce qu'il pouvait se passer, mais les réponses sont souvent... hors sujets ou ne correspond pas à mon cas.

    Voila, j'ai 2 fichiers, le premier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include <Wire.h>
    #include "credentials.h"
     
     
    BME280 mySensor;
     
    void setup() {
      Serial.begin(115200);
      Serial.println("Example");
     
      mySensor.setI2CAddress(0x76);
      if (mySensor.beginI2C() == false) Serial.println("Sensor connect failed");
     
    }
     
    void loop() {
     
      Serial.println(test());
     
    }
    Et le 2eme qui s'appelle "credentials.h" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include "SparkFunBME280.h"
    BME280 mySensor;
    String test () {
      int t = mySensor.readFloatHumidity();
      int f = calcul(t);
      Serial.println("L'humidité est " + String(f));
    }
    int calcul (int a){
      int b = a + 5;
      return b;
    }
    Le code es simple...
    Mais lorsque je compile, j'ai un joli message du compilateur qui me dit :

    exit status 1
    'calcul' was not declared in this scope
    Quelqu'un pourrait m'expliquer pourquoi je me retrouve avec cela... Si je mets tout dans le même fichier, tout se compile normalement, mais la je suis parti dans une appli qui va avoir pas mal de code et je voudrais découper mes différentes fonctions dans des fichiers .h à part.

    Merci de votre aide,

    Thierry

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Bonjour,

    dans ton fichier "credentials.h" tu fais appel à la fonction calcul() dans ta fonction test(). Or, à ce niveau, ta fonction calcul() est inconnue de ton compilo car elle est déclarée après ta fonction test().


    Deux solutions :
    - soit tu déclares ta fonction calcul() avant ta fonction test() : pas terrible, si par exemple tu as des fonctions récursives.
    - soit tu déclares tes fonctions avant de les développer ensuite (remarque le ";" à la fin des déclarations) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include "SparkFunBME280.h"
    BME280 mySensor;
     
    String test();   // déclaration de test()
    int calcul(int);   // déclaration de calcul()
     
    String test () {
      int t = mySensor.readFloatHumidity();
      int f = calcul(t);
      Serial.println("L'humidité est " + String(f));
    }
     
    int calcul (int a){
      int b = a + 5;
      return b;
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Trop fastoche

    Merci encore... Je dois vraiment être fatigué en ce moment ;-)

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

Discussions similaires

  1. was not declared in this scope
    Par Monta^^ dans le forum C++
    Réponses: 3
    Dernier message: 14/07/2009, 16h17
  2. error : 'tr' was not declared in this scope
    Par jimaitou dans le forum Débuter
    Réponses: 3
    Dernier message: 13/05/2009, 13h54
  3. getaddrinfo was not declared in this scope ?
    Par dr.c0der_ dans le forum C
    Réponses: 2
    Dernier message: 30/04/2009, 02h14
  4. QFormLayout was not declared in this scope
    Par kronos85 dans le forum Débuter
    Réponses: 5
    Dernier message: 11/12/2008, 02h30
  5. Réponses: 3
    Dernier message: 03/06/2007, 15h29

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