Arduino & C: mettre une fonction et une variable globale dans un fichier externe
Ce doit être un problème simple. Je suis en train de diviser le code en deux fichiers à l'intérieur d'une esquisse:
test.ino:
void setup(){}
void loop(){ fn(); }
test.c:
char myChar = '?';
void fn(){ myChar++; }
J'ai essayé à l'aide d'un test.h fichier avec différentes configurations telles que avoir les lignes:
extern char myChar;
,char myChar;
void fn();
extern void fn();
Et diverses combinaisons de y compris les tests.c et de test.h les fichiers dans les différents fichiers, mais j'ai toujours une erreur de compilation ou d'une autre, tels que:
test.rpc.o:(.les données.myChar+0x0): multiple definition of `myChar'
test.c.o:(.les données.myChar+0x0): d'abord défini ici
Ou
test.rpc.o: Dans la fonction "setup":
C:\Program Files\arduino-1.0.4/test.ino:4: undefined reference to `fn()'
Je suis vraiment en tirant mes cheveux avec celui-ci. Toute aide serait grandement appréciée
OriginalL'auteur CL22 | 2013-05-12
Vous devez vous connecter pour publier un commentaire.
L'IDE Arduino est vraiment destiné pour les programmeurs débutants. Comme vous devenez de mieux, vous pouvez bifurquer plus traditionnelle des outils de programmation.
Arduino projets sont vraiment juste des applications c/c++. À cet égard, vous avez l'ensemble de c/c++ communauté à votre retour. L'un de leurs plus aimé et méprisé outils est appelé à faire. Vous pouvez déployer et de construire votre projet avec elle. C'est également un excellent point de départ. http://ed.am/dev/make/arduino-mk/arduino.mk
OriginalL'auteur kelf
Vous devriez d'abord essayer de comprendre la différence entre la déclaration et la définition d'une variable. Heureusement, cela a déjà été discuté à stackoverflow ici et ici.
Le point est de mettre toutes les déclarations dans un fichier d'entête (.h) et toutes les définitions dans un fichier d'implémentation (.c). La dernière étape consiste alors à s'assurer que l'en-tête ne sont inclus qu'une fois. Ce résultat est obtenu avec ce qu'on appelle inclure des gardes. Les détails sont encore déjà connu sur stackoverflow ici et ici.
OriginalL'auteur Udo Klein