.| Autor | Beitrag |
|---|---|
|
000 11.12.2002, 16:30 Retro |
Nabend, meines Wissens nach gibt es in C keine Möglichkeit einen IF-Block vorzeitig zu verlassen, stimmt das?
Nur nen kleiner Beispielcode. Wenn z.B. "gna" gleich 1 ist wird der passende Zweig betreten... Dannach soll aber aus dem IF-Block (ereignis) zurück in die Endlosschleiffe gesprungen werden. Wenns nicht geht muss wohl else-if ran... Währe mir aber lieber irgendwie aus dem IF zu entkommen. /Edit shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ Dieser Beitrag wurde am 11.12.2002 um 16:32 von Retro bearbeitet. |
|
Profil || Suche |
|
001 11.12.2002, 17:40 Prefect |
1. In den if()-Expressions macht gna == 1 (doppeltes =) und gna == 2 einiges mehr Sinn. 2. Rein prinzipiell wäre das mit einem goto möglich. In deinem Fall ist ein else if() aber definitiv besser. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
002 11.12.2002, 17:45 Tron |
continue aber ein for(;;) stinkt meistens nach ueblem hack und falls man den entfernt loest sich auch das if-problem... <syntax-jurist>das mit dem = hat ja prefect schon gesagt, zudem sollte dein main am ende ein return 0; haben</syntax-jurist> --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
003 11.12.2002, 18:06 Fraghunter |
ne, continue ist doch falsch, dann macht er das ja gleich nochmal... dein Beispiel sollte z.B. aber auch so gehen: Nihil timeo, nulla re opprimor, nulli periculo cedo. Dieser Beitrag wurde am 11.12.2002 um 18:08 von Fraghunter bearbeitet. |
|
Profil || Suche |
|
004 11.12.2002, 18:06 Retro |
Ists schon aufgefallen dass die Variablen garnicht deklariert sind? :) Ist sowieso nur preudocode... Die Endlosschleife ist kein Hack sondern des Fundament meines Programmes (Mikrocontroller-Programm). Das mit dem Goto gefällt mir ganz und garnicht, läufts wohl wirklich auf nen "else if" hinaus... "continue" ist doch ebenso für Schleifen konzipiert? Bzw. scheint es beim IF immer wieder an den Anfang zu gehen, das geht aber auch nicht, denn nach dem "Ereignis-IF" kommt noch Coder der auch nach vorzeitig abgebrochenen IF sofort ausgeführt werden soll... /Edit shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ Dieser Beitrag wurde am 11.12.2002 um 18:08 von Retro bearbeitet. |
|
Profil || Suche |
|
005 11.12.2002, 18:08 Tron |
@Fraghunter:
@Retro: 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett Dieser Beitrag wurde am 11.12.2002 um 18:10 von Tron bearbeitet. |
|
Profil || Suche |
|
006 11.12.2002, 18:15 Retro |
Mh, ich bemerke, scheiss Beispiel... Ich frage nicht den Wert _einer_ Variable ab sondern habe halt sehr viele IFs untereinander die alle etwas anderes überprüfen... Switch ist nicht drinne. Um das ganze mal zu einem sinnvollen Ende zu bewegen, es scheint mir allmählich so, dass es wirklich keine Fluchtmöglichkeit aus einem IF gibt? --shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |
|
007 11.12.2002, 18:25 Tron |
tja, dann bleibt nur if {} else if {} ... was heisst eigentlich ereignis? kommt da einfach was auf einem ports rein und du liest was da anliegt? <neugier> 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
008 11.12.2002, 18:45 Fraghunter |
mhhh nein, aus einem IF kannst du nicht fliehen, aber mach das doch einfach so: Nihil timeo, nulla re opprimor, nulli periculo cedo. |
|
Profil || Suche |
|
009 11.12.2002, 20:13 apfelkorn |
ýarks (mit ausländischem akzent *g*): @Retro: Ich versteh überhaupt nicht wo dein Problem liegt. Genau für solche Fälle ist ein else if vorgesehen. -- |
|
Profil || Suche |
|
010 11.12.2002, 20:18 Fraghunter |
mhhh Nihil timeo, nulla re opprimor, nulli periculo cedo. |
|
Profil || Suche |
|
011 15.12.2002, 01:36 Retro |
Ja apfelkorn, dann sind es rund 100 verschachtelte IFs :) @Tron Da dass was ich jetzt fummele eher etwas distanziert von dem ganzen Projekt ist, kann ich auch ruhig Auskunft geben... Es geht immer noch um die Matrixtastatur, komplexer als ich gedacht habe. Jetzt sollen/müssen noch ein paar Funktionen umgeschrieben und hinzugefügt werden, der Controller auf dem ich das ganze entwickele hat "nur" 8kB Flash, ich kann auch nicht wechseln da dies der einzigste Controller mit 35 IO-Pins ist welcher mit akzeptabler Geschwindigkeit für hohe Baudraten arbeite... Die 35 Pins sind übrigens restlos (!!) verbraten, auch immer ein gefährliches Spiel, zum Glück hab ich schon voher dran gedacht und einen I²C-Bus parat gehalten... Die Lösung die am besten vom Compiler übersetzt wird ist wirklich die mit den 101-IFs. Bei jedem Durchlauf muss zwar jedes IF abgefragt werden (Im Nein-Fall 4 Zyklen), aber bei 8MHz und 8MIPS stört das nicht, der Counter mit nachfolgendem 1of12-Dekoder ist auf 6kHz getaktet.. shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |
|
012 15.12.2002, 13:16 TheTinySteini |
Ja, die Häufung von IFs ist sicher nicht die am schönsten aussehende Lösung, aber vermutlich die einzig akzeptabel schnelle. Ich denke du kannst noch ganz gut optimieren, wenn du die statistisch am öftesten auftretenden Fälle ganz nach oben nimmst - falls du das nicht sowieso schon getan hast oder alle Fälle gleich oft auftreten. --TheTinySteini |
|
Profil || Suche |

