Frage:
Warum muss ich Bibliotheken einschließen, die in anderen Bibliotheken verwendet werden?
Cybergibbons
2014-02-20 20:06:19 UTC
view on stackexchange narkive permalink

Ich habe eine einfache Bibliothek, die eine andere Bibliothek verwendet.

Hier ist der Header:

  #ifndef __DERIVEDCLASS_H __ # define __DERIVEDCLASS_H __ # include <HardwareSerial.h>class DerivedClass {private: HardwareSerial * serial; public:); endif  

Und der CPP:

  #include "DerivedClass.h" DerivedClass :: DerivedClass () {}  

Und die Skizze:

  #include <DerivedClass.h>void setup () {} void loop () {}  

Dies funktioniert einwandfrei.

Wenn ich jedoch den Bibliotheksheader in Folgendes ändere:

  #ifndef __DERIVEDCLASS_H __ # define __DERIVEDCLASS_H __ # include <SoftwareSerial.h>class DerivedClass {private: SoftwareSerial * class; public: public; }; # endif  

Die Skizze kann nicht kompiliert werden:

/Users/andrew/Documents/Arduino/libraries/DerivedClass/DerivedClass.h:9: Fehler: ISO C ++ verbietet die Deklaration von 'SoftwareSerial' ohne Typ / Users / andrew / Documents / Arduino / library / DerivedClas s / DerivedClass.h: 9: Fehler: erwartet ';' vor '*' Token

Wenn ich die Skizze in Folgendes ändere:

  #include <DerivedClass.h> # include <SoftwareSerial.h>void setup () {} void loop () {}  

dh Wenn Sie die SoftwareSerial-Bibliothek in die Skizze der obersten Ebene aufnehmen, wird sie problemlos kompiliert.

Wenn ich die Bibliothek so erweitere, dass sie tatsächlich Aktionen ausführt, funktioniert sie, wenn sie kompiliert wird.

Warum ist Dies? HardwareSerial ist ein integrierter Teil des Arduino, der sich in hardware / arduino / cores / arduino befindet, und SoftwareSerial befindet sich in Bibliotheken , aber warum sollte der Erstellungsprozess zwischen beiden unterscheiden? .

Einer antworten:
jfpoilpret
2014-02-21 00:41:13 UTC
view on stackexchange narkive permalink

Wenn ich mich richtig erinnere, ist dies tatsächlich eine Einschränkung der Arduino-IDE .

Wenn Sie eine bessere IDE verwenden (ich persönlich verwende Eclipse mit dem Arduino-Plugin), funktioniert dies Wenn Sie also eine Bibliothek A einschließen, die eine andere Bibliothek B enthält, werden am Ende keine Fehler bei der Kompilierung angezeigt, und sowohl B als auch A werden in die endgültige Binärdatei aufgenommen.

Absolut richtig. Ich habe gerade Stino ausprobiert und es funktioniert gut. Ich könnte mich zurückziehen, um die Kommandozeile zu benutzen. Ich kann nicht verstehen, warum sie das tun würden.
In der Tat versuchen sie, dies in 1.5 https://github.com/arduino/Arduino/pull/1726 zu beheben


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...