Gast
#1056756
Hi, ich bin ein AVR neuling und möchte in C ein ATMega324P programmieren. Mein Problem (aber ich bin mir sicher dass viele andere ein solche Macro brauchen könnten) ist eine sehr schnelle und effektive Umsetzung der Switch Case Anweisung für die Programmierung von Statusmaschinen. Ein Macro könnte da helfen. Ich nenne es CHOICE(char index) Eine Variable enthält die Adressen von bis zu 255 Labels. Diese Macro springt entsprechend dem Index in die Labels ,führt das Programmteil aus und springt dann am ende zu CHOICE_END. Der Vorteil ist das man nur ein Sprung benötigt statt bis zu 255 Abfragen. Mit Codevision habe ich eine ähnliche Lösung schon realisiert: eine Menge an Funktionen in der Form.... void Status1(void){....} void Status2(void){....} einen Feld.... int Z_choice[2...] (void)= {Status1, Status2...}; der Aufruf.... (*choice[index])(); Der Nachteil ist der relativ große Overhead durch Calls und die etsprechende push und pops, die mehr resourcen als das nutzprogramm verbrauchen. Hat jemand ein Vorschlag wie ein solcher Macro aussehen könnte?