Willkommen im 2024,
ich bin dabei, einen umfangreicheren Code für nen ESP32 zu erstellen. Dabei möchte ich gerne eine Klasse, an der ich wohl noch ein Weilchen zu knabbern habe, in einen anderen TAB auslagern, so dass ich da ungestört dran arbeiten kann, ohne Gefahr, unabsichtlich am Hauptcode was zu verändern.
Im Hauptprogramm habe ich folgenden Code um die Klasse zu initialisieren:
#define ACESSREQUEST_PIN 4
SDSync sdSync(ACESSREQUEST_PIN);
void setup() {
pinMode(ACESSREQUEST_PIN, INPUT);
}
// SD-Aktualisierung aufrufen
sdSync.updateSD(); // nur zum test, wird später bedingt aufgerufen
void loop() {
// put your main code here, to run repeatedly:
}
Wenn ich die Klasse SSync nun in ein anderes Tab kopiere, muss ich diese dann mit #include im Hauptsketch einbinden?
Für eure Hilfe schonmal vielen Dank im voraus
LG Stefan
Hallo combie, ersmal vielen dan für die schnelle , hilfreiche Antwort.
Nein , nicht vergessen, nur , da ich zurzeit zur Klasse selbst keine Frage habe, und die Klasse auch noch nicht komplett besteht (bin noch dran am basteln um alle darin benötigten Funktionen zu integrieren), hab ich gehofft, meine spärlichen Angaben von der Initialisierung und dem Aufruf würden für die sachdienlichen Hinweise zur auslagerung in ein TAB ausreichen. Da ich für heute eh mit programmieren aufhören wollte, hab ich eben nur noch schnell die Anfrage mit den Minimalst-Infos hier ins forum gestellt. Ich muss erst etwas Schlafen, bin jetzt seit mehr als 36 Stunden aktiv.
Da hast Du natürlich Recht. edoch hast Du mir ja 2 Möglichkeiten aufzeigen können. Ich habs dann zuerst als .ino probiert, jedoch hat er mir dann die Zeile :
SDSync sdSync(ACESSREQUEST_PIN);
angemeckert, mit 'SDSync does not name a type'
hab daraufhin Deine Empfehlung befolgt , eine .h zu verenden und eben mit #include einzubinden , und das hat wunderbar geklappt.
Dankeschön, combie
Mit Verlaub: Das halte (vermutlich nicht nur) ich für eine wenig schöne Lösung.
Ich bevorzuge .h für die Definition (zum Inkludieren wo auch immer es gebraucht wird) und tatsächlich nach alter Väter Sitte eine .cpp für die Implementierung der Klasse.
Hier hast du meine Zustimmung.
Aber niemand hat gesagt, dass Lösungen "immer" schön sein müssen.
ja, ich auch.
Hier bin ich allerdings anders gestrickt!
Bevorzuge ganz klar "*.h only".
Eigentlich: Nur in den wenigen notwendigen Ausnahmefällen weiche ich davon ab.
Danke für Deine erklärenden Ausführungen. Eine kleine Frgae hab ich doch noch: wenn ich die Klasse im Haptsketch liegen hätte, wäre es da egal, ob die Klasse am Anfang , also ganz oben noch vor der Zeile : SDSYNC sdSync(ACESSREQUEST_PIN); liegt, oder kann die klasse auch irgendwo nach dieser Zeile geschrieben sein?
Dankeschön. Alles klar. Dann wird dies auch der Grund sein, warum es im 2. Tab, als .ino nicht geklappt hat, wiel dann da an der Stelle die Klasse noch gar nicht bekannt war.