Re: Vorwärtsreferenzen / Bytearray-Pointer / Threading Kategorie: Programmierung (von Michael Zapf - 22.07.2007 13:56) | ||
Als Antwort auf Re: Vorwärtsreferenzen / Bytearray-Pointer / Threading von André H. - 18.07.2007 7:48 | ||
| ||
Hallo Andre, vielen Dank für die ausführliche Antwort. > > 1. Was in Java problemlos ist, funktioniert in C2 nicht: Vorwärtsreferenzen. Das hei�t, ich muss alle Symbole erst definieren > > (z.B. Funktionen), bevor ich sie nutzen kann. Resultat ist, dass ich jetzt alles, was ich in Java in einzelnen Klassen gruppiert > > hatte, nun komplett in eine Datei reingedrückt habe und eifrig am Sortieren bin (knapp 4000 Zeilen). Gibt es da mittlerweile > > schon einen Compiler, der Vorwärtsreferenzen oder wenigstens Deklaratoren anbietet (wie in C)? > > Nein, der Compiler ist weiterhin ein Single-Pass-Compiler. > Ressourcen, die angesprochen werden sollen, müssen immer "oberhalb" > der ansprechenden Stelle liegen bzw. definiert sein. > Alles in eine Datei zu quetschen ist evtl. nicht so empfehlenswert. Eben, das tut so richtig weh. Aber das war für mich im Augenblick die einzige gangbare Lösung. Es ist halt so, dass ich ein Hauptprogramm exec.c2 und unter anderem eine Benutzerschnittstelle userint.c2 haben wollte. Das UI steuert das rblcd und das keypad an. Wenn ich nun mit der Tastatur den exec stoppen möchte (durch Eingabe eines Befehls), dann muss ich letztlich Zugriff auf exec haben -> userint muss also später kommen als exec. Andererseits kann dann exec nicht mehr auf userint zugreifen (z.B. um den Status anzuzeigen). Es gibt noch Möglichkeiten, dies hinzubekommen: Man müsste userint.c2 aufteilen in einen Steuer- und einen Anzeigeteil, also control.c2 und display.c2 und dann eine Reihenfolge display < exec < control konstruieren. Oder man teilt exec auf in mehrere Teile und bettet dann userint ein: exec1 < userint < exec2. Hintergrund ist: Ich habe mir einen Konverter geschrieben, der Java in C2 umsetzt. Das funktioniert leider nicht allgemein, sondern mit ein etwas Vorbereitung auf Java-Seite (kein new, kein ++/--, kein switch-case usw.). Damit habe ich das ganze Gerät (CC2, Reglerboard, Tastatur, Anzeige, Rel8PCF) emuliert, und nun habe ich den Code eben vollständig auf C2 konvertiert. Die Programmierung in Java geht mir leichter von der Hand, und ich kann da effizienteres Debugging machen. > Prinzipiell kann man direkt Speicherbereiche senden. > Dazu ist natürlich ersteinmal etwas Wissen über die (interne) Funktionsweise und > "Speicherverwaltung" der CC2 notwendig. Dasselbe gilt übrigens auch für rblcd.printlength. Da hätte ich gerne auch die Möglichkeit, aus der Mitte eines byte[] zu drucken. cc: Wunschliste für nächsten Update. :-) > Ob Du die CCPro verwenden willst, ist Deine Entscheidung. > Ich kenne aber einige, die sich an der CCPro versucht haben, aber realativ schnell > wieder zur CC2 "zurück" sind. Vielen Dank für diesen Hinweis. Vielleicht bleibe ich dann lieber mal auf der CC2 - die sieht jetzt etwas anders aus, aber vertrieben wird sie noch, oder? Ich habe ein bisschen die Befürchtung, dass man von Seiten Conrads auf die CC-Pro gedrängt wird (wenn man in den Katalog sieht). Michael | ||
Antwort schreiben Antworten: Re: Vorwärtsreferenzen / Bytearray-Pointer / Threading (von André H. - 4.08.2007 10:14) |