Re: internel compiler error Kategorie: Programmierung C (von kai - 1.09.2009 8:14) | ||
Als Antwort auf Re: internel compiler error von Hanns - 1.09.2009 7:41 | ||
| ||
> > > > > > > > > Hallo, > > > > > > > > > > > > > > > > > > ich bekommen seit kurzem einen internel compiler error: > > > > > > > > > > > > > > > > > > Compiling Project DA_Steuerung > > > > > > > > > > > > > > > > > > C-Control Pro Compiler (C) 2009 Conrad Electronic > > > > > > > > > Running Pass 1 > > > > > > > > > Running Pass 2 > > > > > > > > > internal compiler error Too much parameter entries at RET, in file codegen.cpp line:3730 > > > > > > > > > one Error - compliation aborted. > > > > > > > > > Writing Symbols - 7924 bytes.. > > > > > > > > > > > > > > > > > > > > > > > > > > > Weiss jemand was schief läuft? Was kann ich tun? Der Code ist etwas zu gro� zum posten. > > > > > > > > > Bei interesse kann ich den mal irgendwo hochladen. > > > > > > > > > > > > > > > > > > VG > > > > > > > > > kai > > > > > > > > > > > > > > > > Wenn Probleme mit Compilerfehlern auftauchen, ist es immer wichtig zu wissen, welche Version > > > > > > > > eingesetzt wird. Da in Zeile 3730 dieser Fehler nicht ausgelöst wird, kann ich mit hoher > > > > > > > > Wahrscheinlichkeit sagen, das Du nicht die aktuelle Version 2.1 benutzt. Bitte die neueste > > > > > > > > Version von C-Control Pro installieren, und nochmal testen. > > > > > > > > > > > > > > > > Gruss Peter > > > > > > > > > > > > > > Hallo Peter, > > > > > > > > > > > > > > doch, ich benutze die neuste Version. Und ich habe das Problem gefunden. Iher ein kleines Beispiel: > > > > > > > > > > > > > > void main (void) > > > > > > > { > > > > > > > byte b; > > > > > > > b=abc(10); > > > > > > > } > > > > > > > > > > > > > > byte abc(byte _a) > > > > > > > { > > > > > > > //tu was sinnvolles > > > > > > > > > > > > > > return xyz(_a); <----- das verursacht den Fehler!! > > > > > > > } > > > > > > > > > > > > > > byte xyz(byte _x) > > > > > > > { > > > > > > > //macht auch noch was anderes > > > > > > > byte a; > > > > > > > a=_x+5; > > > > > > > return a; > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > Man kann das lösen indem man die Rückgabe von xyz in einer variablen zwischenspeichert und dann > > > > > > > die Variable zuück gibt. Allerdings hätte ich gerne, um Platz zu sparen und die �bersichtlichkeit zu behalten, > > > > > > > meine Schreibweise :-P Gibts ein Workaround? Oder bald ne neue Version ;-)? > > > > > > > > > > > > > > VG Kai > > > > > > > > > > > > > > > > > > das Programm oben funktioniert doch so. Was ich gemacht habe, ist ein Array zu übergeben an xyz.... > > > > > > > > > > > > void main (void) > > > > > > { > > > > > > byte b; > > > > > > byte c[3] = {1,2,3}; > > > > > > b=abc(c); > > > > > > } > > > > > > > > > > > > byte abc(byte _a[]) > > > > > > { > > > > > > //tu was sinnvolles > > > > > > > > > > > > return xyz(_a); // <----- das verursacht den Fehler!! > > > > > > } > > > > > > > > > > > > byte xyz(byte _x[]) > > > > > > { > > > > > > //macht auch noch was anderes > > > > > > byte a; > > > > > > a=5; > > > > > > return a; > > > > > > } > > > > > > > > > > > > > > > > > > so sieht das jetzt aus, damit der Fehler verursacht wird. > > > > > > > > > > abc erklärst DU als byte, Der return wert dagegen iste ein byte-Array . > > > > > Könnte es daran liegen? > > > > > Hanns > > > > > > > > Eigentlich ist das kein Array. Ich gebe in abc das Ergebnis aus xyz zurück. Und das ist nur ein Byte - kein > > > > Array. Allerdings übergebe ich an xyz ein Array. Und genau das ist das Problem. Würde ich nur ein Byte > > > > übergeben geht es. > > > > > > > > VG Kai > > > > > > ich verstehe trotzdem MAIN nicht: > > > > > > byte abc(byte _a[]) > > > { > > > //tu was sinnvolles > > > return xyz(_a); // <----- das verursacht den Fehler!! > > > } > > > > > > -einmals schreibst Du "_a[]" und dann "_a": Was machst DU mit _a[], und woher kommt _a? > > > > > > abc ist eine funktion, so wie xyz auch. Ich rufe in main nur abc auf, welches wiederrum xyz aufruft. Und > > abc und xyz geben dabei Werte zurück (aber je nur 1 Byte). d.h. abc erwartet das ein Array bein Aufruf > > übergeben wird. > > > > byte abc(byte _a[]) > > { > > } > > > > > > Das selbe gilt für xyz. Und dort übergebe ich dann das Array -> xyz(_a); > > In anderen C Programmierumgebungen funktioniert das auch so... > > Wahrscheinlich bin ich dämlich: > > die funtktion "byte abc(byte _a[])" gibt ein byte zurück ( ist mir klar ), und erwartet > ein byte_Array ( nämlich "_a" ). > SOllte man daher auch schreiben können > "byte abc(byte [] _a)" > > Du gibst zurück "return _a " ( und das ist für mich immer noch das Array - > während ein "Byte" zurückgegeben weren sollte) ?!? > "return byte[0]" oder "return byte[n]" würde für mich Sinn machen. > > Oder stehe ich jetzt völlig auf dem Schlauch > ( ich wei� ja, da� bei mir langsam der ALtersstarrsinn beginnt) > Hanns Hallo Hans, prinzipell hast Du recht. Allerding schreibe ich nirgens "return _a;" sondern "return xyz(_a);" VG Kai PS "byte abc(byte [] _a)" das kann man im C so nicht verwenden. nur "byte abc(byte _a[]);" | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum