Go Down

Topic: [Résolu} Problème de compilation avec pointeur (Read 164 times) previous topic - next topic

theGen

Sep 13, 2017, 01:11 pm Last Edit: Sep 13, 2017, 08:36 pm by theGen
Bonjour à tous

Je viens vous solliciter de l'aide car je suis en train de tourner fol dingo ;-)

J'explique mon problème

Arduino V 1.6.8

j'ai créé 2 objets TIMER_1 et TIMER_2 instanciés de la même classe (DailyTimer)
dans mon corps de programme j'ai une fonction à qui je passe un des objets précités et qui à pour but d'afficher le contenu d'un attribut de cet objet
Code: [Select]

subMenuTimer(&TIMER_1);

void subMenuTimer(DailyTimer *ptrDTimer)
{
LCD1.clear();
LCD1.setCursor(0,0);
LCD1.print(ptrDTimer->getGrowingStart());
       .......


et j'obtiens ce message d'erreur :

error: 'DailyTimer' was not declared in this scope
error: 'ptrDTimer' was not declared in this scope

J'ai bien entendu un #include <DailyTimer.h>
et la classe est instanciée correctement, c'est une librairie que j'ai crée et qui tourne parfaitement

Je vous avoue que je comprends pas pourquoi le compilateur m'envoie bouler

Si une âme charitable pouvait se pencher sur mon problème, merci

Cordialement.


J-M-L

postez tout votre code et toutes les erreurs (avec le No de ligne) - ça peut simplement venir d'une accolade manquante dans votre code...

appuyez sur ctrl-T pour indenter correctement et voir si tout ce qui s'ouvre se ferme au bon endroit () {} []

Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

fdufnews

Et où sont installées les librairies?

theGen

Bonjour à vous 2 et merci pour vos interventions

Cela ne vient pas d'un problème d'accolade ou de positionnement de la librairie, quand je met le code problématique en rem, cela compile sans problème, je fais d'autre appel à ces objets et tout tourne,
c'est juste cette fonction qui ne passe pas à la compile pour une raison obscure.

Là je suis en train d'installer des versions supérieures à 1.6.8 pour voir si le problème persiste.

Si quelqu'un à une idée, je suis preneur.

Cordialement

J-M-L

on est toujours preneur de votre code et de la vraie erreur complète... le bout de code que vous avez posté ne montre rien

cf Snippets R Us!
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

ChPr

J'ai l'IDE 1.6.7.

J'ai téléchargé les librairies nécessaires à votre programme. J'ai lancé leur exemple : pas de problème

J'ai ajouté votre fonction (dans laquelle je n'ai pas mis d'instructions) et son appel : pas de problème

Par contre si je mets l'instruction "getGrowingStart()" dans votre fonction, j'ai une erreur me disant que cette fonction n'existe pas ; ce qui est les cas.

Cordialement.

Pierre
Pourquoi faire simple alors qu'il est si facile de faire compliqué !

theGen

re:

Si cela peut aider

l'appel de fonction

Code: [Select]

void gotoModifyProcessData(int menuSettingProcessSelected)
{
switch (menuSettingProcessSelected)
{
    case  1: subMenuTimer(&TIMER_1); break;
            case  2: subMenuTimer(&TIMER_2); break;
            //case  3:  ; break;

}
}



et la fonction

Code: [Select]

void subMenuTimer(DailyTimer *ptrDTimer)
{
LCD1.clear();
LCD1.setCursor(0,0);
LCD1.print(ptrDTimer->getGrowingStart());
}



et l'erreur

GDW3.ino:14:19: error: variable or field 'subMenuTimer' declared void
GDW3/GDW3.ino:14:19: error: 'DailyTimer' was not declared in this scope
GDW3/GDW3.ino:14:32: error: 'ptrDTimer' was not declared in this scope

Cordialement

theGen

re:

@ Pierre : comment aurais-tu pu charger cette classe ? C'est une classe perso que j'ai écrite
il doit certainement exister une classe homonyme mais qui n'a rien à voir avec la mienne
Merci quand même pour ton intervention

getGrowingStart est une methode de la classe DailyTimer et qui fonctionne

Si je fais Serial.println(TIMER_1.getGrowingStart()); il n'y a aucun souci

Je le répete, c'est un problème de compilation, je suis à la base un programmeur ADA, et je sais qu'il y a moyen de faire des pré-déclaration pour informer le compilateur

Ne serait-ce pas une cause éventuelle de mon problème ?

Cordialement




ChPr

DailyTimer

timelib

Maintenant, si vous écrivez vos propres procédures, il faut le dire  et les inclure ou en donner le lien si vous voulez qu'on comprenne et qu'on vous aide.

Cordialement.

Pierre
Pourquoi faire simple alors qu'il est si facile de faire compliqué !

J-M-L

#9
Sep 13, 2017, 03:56 pm Last Edit: Sep 13, 2017, 04:00 pm by J-M-L
pour être clair - vous n'utilisez pas cette librairie?

si vous ne voulez pas nous montrer tout votre code, pouvez vous écrire un petit programme tout bête qui met en lumière ce que vous avancez... on ne connait pas votre classe, on doit vous croire sur parole quand vous dites que tout se passe bien

Mais bon avant cela,  je concentrerai mes efforts si j'étais vous non pas sur le pointeur mais sur la première erreur
GDW3.ino:14:19: error: variable or field 'subMenuTimer' declared void
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

kamill

Bonjour,

Il y a quand même une forte probabilité pour que cette erreur soit due à une des causes suggérée par J-M-L en #1
Quote
appuyez sur ctrl-T pour indenter correctement et voir si tout ce qui s'ouvre se ferme au bon endroit () {} []
Auxquelles j'ajouterais l'oubli d'un ;

theGen

Merci à tous

Problème résolu en compilant sous 1.8.4, je le sentais gros comme une maison

Cordialement

J-M-L

Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

theGen

Bonsoir

tu peux dire mouuuais... autant qu'il te plaira, cela ne change rien au fait.
Pour explication je travaillais sous sublime text 3 et j'avais chargé la version 1.6.8 depuis l'IDE ST3
Suite au problème de compil, j'ai également chargé depuis ST3 le core 1.6.9 et 1.6.20 mais toujours le même problème

Comme l'interface ST3 ne me proposait rien de supérieur à 1.6.20, j'ai fait une installation complète de l'IDE arduino 1.8.4
et la compilation depuis son IDE à fonctionné, je précise que j'étais sous la version ST3 antérieure à la 3.0 (Build 3143).

Voila pour l'histoire, si cela peut aider quelqu'un

Cordialement.


Go Up