Parce que j'ai appris cela sur le cours c++ de openclassroom. J'étais au départ parti sur du .h, pensant que c'était le problème, j'ai donc respecter la norme en mettant .hpp mais toujours même erreur.
Un exemple concret plus light et qui me fait la même erreur :
fichier .cpp :
#include "write.h"
void write(unsigned int pinNumber, float consigne, int mode){
switch (pinNumber)
{
}//fin switch
}
et le header en .h
#ifndef WRITE
#define WRITE
void write(unsigned int pinNumber, float consigne=0.0, int mode=0);
#endif
je précise que je suis un un board custom equivalent à la minima.
Après des heures de recherche cette soirée, je ne comprend pas du tout d'où provient l'erreur...
Ce n’est qu’une convention - le .h est tout aussi utilisé
On trouvera souvent un .hpp quand vous mettez le code aussi dans le fichier et pas uniquement les headers - en gros une des conventions c’est .hpp = .h + .cpp réunis
Si vous avez des classes pure virtual alors on utilisera le .hpp
j'ai mis la fonction write.cpp et son header directement dans le dossier "/cores/" là où se trouve toutes les fonctions arduinos digital, analog et autres.
J'ai ensuite include write.h dans le fichier main.cpp
C'est pour cela que je n'ai plus besoin de l'include dans le .ino
C'est peut etre la que je fais l'erreur ? Cad d'utiliser le dossier /cores/ ?
Je dois faire une manip que l'ide n'aime pas, lorsque j'essai exactement le même code, mais écrit entièrement cette fois ci dans le fichier . ino, ça compile sans erreur
void write(unsigned int pinNumber, float consigne=0.0, int mode=0);
void setup() {}
void loop() {
write(2,1);
}
void write(unsigned int pinNumber, float consigne, int mode){
switch (pinNumber){}
}
autre test, cette fois, quand je met les fichiers write.h et write.cpp directement dans le même dossier que le sketch .ino, et bien ça compile sans erreur le code suivant (code du sketch) :
edit:
et rebelotte, dès que je remet les fichiers de la fonction write dans le dossier cores du package, erreur de compilation à nouveau, la même erreur