Je suis en train d'apprendre le C++, je suis dans l'étape "Utiliser plusieurs fichiers"
Et je rencontre un soucis sur l'emplacement des .h et .cpp.
Voici le main
#include <Arduino.h>
#include <fct.h>
void setup() {
// put your setup code here, to run once:
int result = myFunction(2, 3);
}
void loop() {
// put your main code here, to run repeatedly:
}
Voici le fct.h
#ifndef FCT_H
#define FCT_F
// put function declarations here:
int myFunction(int, int);
#endif
Et voici le fct.cpp
#include <fct.h>
// put function definitions here:
int myFunction(int x, int y) {
return x + y;
}
Si je met les 3 fichier dans le répertoire "src", pas d'erreur à la compilation.
Si je met le .h dans le répertoire "include" et fct.cpp dans le répertoire "lib", comme préconisé dans les readme j'ai l'erreur
Projects\Test_CPP/src/main.cpp:6: undefined reference to `myFunction(int, int)'
Merci pour votre aide
PS: je suis sous W11 avec Visual Studio Code et PlatFormio
Avec l’IDE arduino vous mettez tout dans le répertoire du sketch.
(Pour votre code de test le compilateur va tout virer car il n’y a aucun effet de bord donc votre classe ne sera même pas inclus, Ajoutez un Serial.begin() et un print pour que tout le code soit dans le binaire final)
Bonjour,
VScode est un IDE professionnel qui crée les dossiers habituels même avec l'outil platformio. notamment les répertoires Include et src qui sont la base de la programmation C++. Votre façon de faire est la bonne, il faut juste faire attention aux erreurs de syntaxe.
Tu peux mettre tes fichiers include.h et le include.cppensemble soit dans le ./src, soit dans le ./include.
Tu peux aussi les placer dans le ./lib dans le cas où tu souhaites construire une bibliothèque à vocation réutilisable. Il sera alors utile d'y créer un sous-répertoire par bibliothèque avec une arborescence permettant de classer tes fichiers (src, examples, docs, ...)
Ce qui est le fonctionnement normal. Ces noms de répertoire sont propres à l'IDE ils peuvent être différents dans un autre IDE
Le répertoire include contient les déclarations c'est à dire les headers ou fichiers .h
Le répertoire src contient les sources c'est à dire les .cpp
Le répertoire libdeps (librairies dépendances) contient les librairies externes que vous ajoutez dans votre projet
Les autres répertoires dont lib sont pour des utilisations plus avancées
Ce n'est pas forcément expliqué en détail dans les cours la façon de passer d'une programmation monobloc à une compilation séparée mais je vous assure que vous avez bien compris et appliqué la bonne méthode en créant votre fichier .h et votre fichier.cpp.
En conservant votre façon de travailler vous pouvez tester avec un second .h et .cpp pour faire un produit par exemple. Je vous conseille de donner un nom représentatif à vos fichiers ex: fonctionAddition, fonctionProduit etc... plutôt que fct, fct1 etc...