Problème avec #include

Salut à tous,
Mon projet commence à bien prendre forme, seulement je l'organise en fichier..
Donc dans mon prog principal, j'ai un #include toto.h, et dans mon toto.c, j'ai des fonctions dont une qui fait un serial3.flush(); (ou autre chose, ce n'est pas le flush le problème)

A la compilation, j'ai une erreur me disant qu'il ne connait pas serial3....

Comment faire? j'ai bien tenté un #include <serial.h> dans mon toto.h, mais rien n'y fait..
Merci pour votre aide.

Bonjour,

Si tu utilises des éléments du framework arduino dans tes .cpp il faut que tu inclues Arduino.h

#include <Arduino.h>

Un conseil: sauf si tu connais vraiment, ne mélange pas du C avec du C++. Renommes ton toto.c en toto.cpp

Merci pour ta réponse, effectivement, c'est ce que je fait et ça permet d'éviter l'erreur sur boolean par exemple, mais pas sur le serial3...
Bye

Tu as bien déclaré une carte qui à un Serial3 (mega2560 par exemple) dans l'ide?

Oui, tout a fait...

tu as renommé toto.c en toto.cpp ?

Aaaahhhh ça marche.... As-tu une explication logique?

ben oui
Serialx sont des instances d'une class C++, donc tu ne peux y accéder en C pur

ok...
Merci

Bon finalement ça ne marche pas.....
En fait il ne me montrait plus l'erreur sur Serial3, mais sur d'autres trucs (mais c'est normal, je recopie du code d'une autre appli en C), donc j'ai pensé que c'était bon...

Finalement, le fait d'avoir un fichier.cpp me fout un bordel monstre, il me donne des message d'erreur sur plein de fonction en conflit avec la stdlib...
Exemple:

:\Users\burelp\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\cores\arduino/WString.h:126:27: note: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, const char*)'

  friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr);

                           ^

C:\Users\burelp\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\cores\arduino/WString.h:127:73: error: conflicting declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, char)'

  friend StringSumHelper & operator + (const StringSumHelper &lhs, char c);

                                                                         ^

C:\Users\burelp\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\cores\arduino/WString.h:125:27: note: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, const String&)'

  friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs);

ou encore:

                      ^

C:\Users\burelp\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\cores\arduino/Arduino.h:250:6: note: previous declaration 'long int random(long int)'

 long random(long);

      ^

C:\Users\burelp\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\cores\arduino/Arduino.h:251:23: error: conflicting declaration of C function 'long int random(long int, long int)'

 long random(long, long);

                       ^

In file included from C:\Users\burelp\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\cores\arduino/Arduino.h:23:0,

                 from sketch\lectureDm.h:20,

                 from sketch\LectureDm.cpp:13:

c:\users\burelp\appdata\local\arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2\avr\include\stdlib.h:590:13: note: previous declaration 'long int random()'

 extern long random(void);

             ^

Alors j'ai essayé de virer mon fichier dont les fonctions ne sont pas encore appelées dans le prog princ.
Et j'ai renommé un autre fichier en .cpp (en .c je n'ai pas de souci) et là bing ça recommence, les mêmes erreurs....
En fait si j'ai un #include <Arduino.h> dans un fichier .cpp ça fout le bazar, donc retour à la case départ....

D'après ce que tu montres WString.h est compilé en C et non en C++

En fait, je ne sais pas trop ce qu'il fait.... C'est très bizarre tout ça...

Bon, j'ai trouvé la solution. Au lieu de faire un .h et un .cpp ou .c avec mes fonctions dedans, j'ai créé une classe, donc un .h et un .cpp avec un #include <Arduino.h>, je déclare un objet dans mon prog princ et là tout se compile correctement....
Merci pour ton aide.

A suivre....