Hallo Ich spiele ein wenig mit Arduino Due herum und dachte mir Deine Ino Datei ist groß und unübersichtlich. Hallo bastelst Du Dir ein h und Ein C File das steht im Header #include <URTouch.h> URTouch myTouch(6, 5, 4, 3, 2); Nur dummerweise zickt der Arduino Compiler jetzt in meinem Header rum Bibliothek URTouch im Ordner: D:\__Dokus\Documents\Arduino\libraries\URTouch (legacy) wird verwendet exit status 1 unknown type name 'URTouch' Kann ich die Klasse im Header so nicht deklarieren. In den gesamten Ino File hat alles funktioniert.
:
Verschoben durch User
> URTouch myTouch(6, 5, 4, 3, 2);
Das ist keine Deklaration, sondern eine Definition.
Die hat in Header Dateien eigentlich nichts verloren.
Einen der Gründe dafür, hast du gerade gefunden.
jA dANKE dAS IST EINE GANZ GUTE lÖSUNG http://forum.arduino.cc/index.php?topic=84663.0 Arduino Fanboy Das ist keine Deklaration, sondern eine Definition. Die hat in Header Dateien eigentlich nichts verloren. Einen der Gründe dafür, hast du gerade gefunden. Warum gehört das nicht in einen Header ?
Martin M. schrieb: > Warum gehört das nicht in einen Header ? Arduino F. schrieb: > Das ist keine Deklaration, sondern eine Definition. > Die hat in Header Dateien eigentlich nichts verloren.
Headerdateien sind dafür da, Dinge, die in einem Codemodul definiert werden, von außen (d.h. aus anderen Codemodulen) nutzbar zu machen. Also werden Headerdateien von jedem Codemodul genutzt (dort eingebunden), das auf diese Dinge zugreifen soll. Wenn nun eine Definition in einer Headerdatei steht, wird das zugehörige Objekt bei jedem Einbinden erzeugt. Und damit ist es mehrfach vorhanden ... was zu Fehlermeldungen des Linkers oder sehr spannenden Nebeneffekten führt. In Headerdateien gehören also nur Deklarationen ("Irgendwo gibt es ein Objekt, das so und so aussieht"), keine Definitionen ("Das hier, an diesem Speicherplatz, das ist ein Objekt, das so und so aussieht"). "Objekt" bezieht sich hier auf Variablen oder Funktionen, und nicht auf "Objekte" im Sinne der objektorientierten Programmierung. Eine Deklaration einer Variablen erfolgt durch Voranstellen des Schlüsselworts "extern", eine Deklaration einer Funktion erfolgt durch Angeben des Funktionsprototypen; das Schlüsselwort "extern" ist hier implizit und kann daher auch weggelassen werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.