Re: Compilerfehler? (was: Abnormales Programmende) Kategorie: Programmierung (von André H. - 16.11.2002 11:47) | |
Als Antwort auf Re: Compilerfehler? (was: Abnormales Programmende) von Joerg Pohl - 16.11.2002 10:15
| |
Hallo Jörg, > ... Ich hoffe mal, dass Conrad das in irgendeiner Weise honoriert. Bis jetzt leider nicht. Aber Conrad macht es sich mit der CC2 ziemlich einfach. Bei der Conrad-Hotline wird bei Problemen und Fragen ziemlich schnell auf meine Site verwiesen. Ich konnte dies erst nicht glauben, wie mir das jemand das erste Mal mitgeteilt hatte, bis ich es selbst ausprobiert habe. :-) > > while 1 ist kein gültiger Term. Bei while mu� immer eine Variabel > > angegeben werden. Da gibt's sonst Fehler und deshalb ist der > > VMC-code dann auch kürzer. > > Mit while 1==1 sollte es aber funzen. > > Hmm, das ist schlecht, nicht weil ich "while 1==1" o.ä. hinschreiben muss, sondern weil ich kein > Vertrauen in einen Compiler haben kann, der ungültige Syntax in irgendwelchen ungültigen Code > umsetzt. Wie viele solche Konstrukte gibt es denn noch? Ehrlich gesagt ähh ... geschrieben, bin ich auf den Compilier-Fehler mit "while" auch erst mit Deinem Posting gesto�en. Ich habe das auch erst untersucht, als Du es im letzten Posting erwähnt hattest. Mit der Untersuchung kam ich zu diesem Schlu�, da� bei while kein konstanter Wert stehen darf, sondern nur eine Berechnug bzw. Vergleich oder eine Variabel. Also do { ...} while a; funktioniert. "a" darf aber auch keine mit const definierte Konstante sein. Dieser Fehler lässt sich übrigens mit dem Simulator auch reproduzieren: Lege ein neues Projekt an und setzt in ein Leeres Modul folgenden Thread: byte a,x; const b=1; thread main {a=1; do {x=x+1; } while a; } Führe diesen Thread einmal mit "while a;" mit mehreren Druchläufen im Einzelschritt aus(Taste F7). Es sollte ganz normal ausgeführt werden. Danach ersetzt Du while a; durch while b; . b ist hier eine konstante. Wenn Du jetzt mehrere Durchläufe mit F7 machst, springt der Simulator nach while immer in ein anderes aktives Modul und führt dor wahrscheinlich die oberste Funtion aus bzw. markiert diese nur und macht etwas anderes. Bei mir ist der Simulator bei dem Test, den ich gerade gemacht hatte, immer in pcf.c2 gesprungen, das dieses Modul in jedem meiner Projekte aktiviert ist. Bei Dir wird es dann sicher in das letzte aktivierte Systemmodul springen. > > Baue Debugging-Informationen ein, die aufs externe LCD ausgegeben werden, > > [...] > > Wenn der Bereich eingegrenzt ist, erstelle in diesem in jeder Zeile eine Ausgabe > > der aktuellen Information. > > danke für deine Debugging-Tips, bislang habe ich das Debugging aber so verstanden und gehandhabt, > in erster Linie meine Programmierfehler zu finden. Jetzt kommt eine neue Qualität hinzu, nun sucht > man halt eigene und CC2-Fehler ;-) Der Fehler liegt eindeutig am Compiler. Das Problem ist, da� es sicher nicht so schnell eine neue Version davon geben wird. > Vielleicht kan sich ja auch Conrad mal dazu äu�ern! > Das wird sicher auch nicht so viel nutzen, da ich, glaube ich, die CC2 mittlerweise besser kenne als das CTC. :-) MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: |