INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programm lesbarer machen
18.10.2014, 20:34
Beitrag #1
Programm lesbarer machen
Ich will ein relativ grosses Programm lesbarer machen - das ständige scrollen nervt.
Sowohl die Daten als auch die Programmabschitte sind logisch eindeutig teilbar.
Als "Alter" COBOL und Assembleranwender denke ich vermutlich zu kompliziert.
Mit #include kann ich ja den Code entsprechend aufteilen. Aber der Compiler mag mich nicht. Ich bekomme immer Fehlermeldungen wie

lichtbereiche.cpp.oSad.bss.Licht4sensorValue+0x0): multiple definition of `Licht4sensorValue'
hellstenLichtpunktSuchen_141016.cpp.oSad.bss.Licht4sensorValue+0x0): first defined here

lichtbereiche sind meine Datenfelder die ich auslagern will.

C ist fast noch ein Fremdwort für mich. Mein Programmcode ist natürlich "Cobol/Assembler" in C. Ich kanns halt nicht besser

Danke für jegliche Hilfe

Eberhard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 08:29
Beitrag #2
RE: Programm lesbarer machen
(18.10.2014 22:30)kurti schrieb:  Hallo,
wie wäre es mit einer Aufteilung auf Tabs.
( Oben rechts unter dem Serialmonitor auf das Dreieck klicken und Tab einfügen wählen )
Man kann dann Teile des Codes in die neuen Tabs auslagern.
Wenn man die Tabs sinnvoll beschriftet, findet man den Code schnell wieder.
Gespeichert werden die Tabs als eigene Dateien im gleichen Verzeichnis wie der Sketch.

Gruss
Kurti

Danke Kurti,

habe ich bereits gemacht, -ino wird nicht erkannt, umbenannt in -pps, -h angelegt
- nur was muss da rein. Und jetzt kommen diese Fehlermeldungen. Ich will die pps ja nur wie ein copy-statement in Cobol verwenden. Vielleicht noch eine Ahnung?

Danke Eberhard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 09:01
Beitrag #3
RE: Programm lesbarer machen
schreib doch mal 1, 2 beispielhafte Funktionen hier rein, die du auslagern willst, dann kann man ja mal sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 15:57 (Dieser Beitrag wurde zuletzt bearbeitet: 19.10.2014 15:59 von tito-t.)
Beitrag #4
RE: Programm lesbarer machen
Warum geht es nicht auch ohne tabs, so wie in normalen C Programmen auch, dass man einfach z.B. die Funktionen aus dem Hauptprogramm

Code:
// main file test.ino
void foo() { //...
}

void bas() { //...
}

void testfunc() {   // uses / refers to foo() and bas()
  foo();
  bas();
}

ausschneidet und in eine .h header lib Datei
foobas.h
rüberkopiert mit dem Inhalt

Code:
// header lib file foobas.h
void foo() { //...
}

void bas() { //...
}

und dann im geänderten Hauptfile (test.ino) einfach nur #included

Code:
// main file test.ino
#include "foobas.h"  // im selben directory

void testfunc() {   // uses / refers to foo() and bas() in header lib
  foo();
  bas();
}

:?:
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 19:28
Beitrag #5
RE: Programm lesbarer machen
@kurti, @tito-t Vielen Dank.
@tito-t Deinen Vorschlag werde ich gerne annehmen, aber erst dann wenn ich in C laufen kann, im Moment kann ich ja nicht einmal krabbeln.

Ich interpretiere #include als preprocessor.

Es sieht so aus, als ob man globale Variable nicht per #include in einen sketch übernehmen (einkopieren) kann.
Ist diese Annahme richtig? oder gibt es eine Lösung für ein preprocessing?

Eberhard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 20:00
Beitrag #6
RE: Programm lesbarer machen
(19.10.2014 19:28)basst_scho schrieb:  ...
Es sieht so aus, als ob man globale Variable nicht per #include in einen sketch übernehmen (einkopieren) kann.
...

Die Arduino IDE verhält sich schon etwas "eigenartig" wenn man andere Compiler-Software gewohnt ist.

Ich bin dazu übergegangen im linken Tab der IDE-Fensters alle globalen Variablen, alle #include <xxx> und loop(); unterzubringen. (hier muss man mit den Tabnamen spielen damit der Haupttab links bleibt)
Subroutinen können dann auf weitere Tab's aufgeteilt werden.
Ich lege auch für alle Subroutinen die in anderen Tabs stehen im Haupttab Funktionsprototypen an. Ich weiß nicht ob das zwingend notwendig ist, aber es erleichtert den Aufruf von Subroutinen weil man schnell mal die Parameter nachschauen kann.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 20:39
Beitrag #7
RE: Programm lesbarer machen
@ardu-arne IDE merkwürdig, ich unterschreibs.

Mein eigentlicher Fehler war:

Tabs dürfen nicht per #include aufgerufen werden!!!

bei allen mir bekannten preprocessoren muss man dies.

Wieder was gelernt.

@kurti jetzt funktionierts
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2014, 20:50
Beitrag #8
RE: Programm lesbarer machen
an aller Kenner / Könner:

klappt das mit dem #include denn jetzt hier überhaupt nicht ? Ich bin völlig perplex, mit gpp C/C++ klappt das #include ohne jedes Problem ... Confused

Ich habe es auch nicht hingekriegt, wenn ich .h files (foobas.h) in einen gleichnamigen Ordner (foobas) ins libraries Verzeichnis kopiere -
mit Standard libs geht es aber doch, was machen die anders?? Huh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Zumo, Felerhaftes Programm (2) Werner Lage 2 312 18.09.2017 06:51
Letzter Beitrag: Werner Lage
  Frage zu STM32F1xx / Was kann ich bei dieser Fehlermeldung machen? Holzwurm56 37 1.224 04.09.2017 14:14
Letzter Beitrag: Holzwurm56
  Arduino Zumo, Felerhaftes Programm ? Werner Lage 1 248 20.06.2017 13:57
Letzter Beitrag: Tommy56
  Aus char string machen metzgefa 1 348 06.05.2017 15:15
Letzter Beitrag: Tommy56
Rainbow Programm mit Tastr unterbrechen Schwinge117 12 724 02.03.2017 21:17
Letzter Beitrag: Tommy56
  Programm Elegoo Smart Robot kit Thorsten_S 3 727 29.01.2017 17:40
Letzter Beitrag: Micha06
  Fehler in meinem Programm Franz54 7 513 01.12.2016 23:58
Letzter Beitrag: hotsystems
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 1.160 06.07.2016 14:59
Letzter Beitrag: Binatone
  Werte an anderes Programm weiterleiten Typ 2 736 12.03.2016 23:28
Letzter Beitrag: Typ
  PWM schneller machen...? Maxi290997 6 698 01.02.2016 06:50
Letzter Beitrag: Binatone

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste