Forum: Mikrocontroller und Digitale Elektronik Schleife als Makro auslagern?


von theVoid (Gast)


Lesenswert?

Moin,

ich habe in einem Quelltext an verschiedenen Stellen folgende Schleife:
1
do {
2
  ladeAdresse(adresse);
3
  tuWas();
4
  tuWasAnderes();
5
  adresse = nextAdresse();
6
} while(adresse);

Nun möchte ich gern ein Makro so definieren, dass ich diese Schleifen so 
schreiben kann (oder vergleichbar...):
1
ITERATION(adresse) {
2
  tuWas();
3
  tuWasAnderes();
4
}

So könnte ich fehler von vornherein ausschließen, und auch der source 
wäre mMn übersichtlicher.

Wer kennt sich gut genug mit Makros aus, um mir dabei zu helfen?

~void~
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

theVoid schrieb:
> Wer kennt sich gut genug mit Makros aus, um mir dabei zu helfen?
Ich meine, dein Problem erkannt zu haben:
> ich habe in einem Quelltext an verschiedenen Stellen folgende Schleife

Im Ersnt: poste doch mal den zugehörigen Quellcode, dann kann man statt 
raten etwas raten. Vermutlich ist einfach der Ansatz schon ungünstig.
von theVoid (Gast)


Lesenswert?

Lothar Miller schrieb:
> Im Ersnt: poste doch mal den zugehörigen Quellcode, dann kann man statt
> raten etwas raten. Vermutlich ist einfach der Ansatz schon ungünstig.

Hmmm, neee. Der Code ist noch in einem absolut-nicht-vorzeigbaren 
experimentellen Alpha-Stadium. Ich schreibe da an einem alternativen 
Dateisystem, im Moment nur spezialisiert auf SD/MMC-Karten.

Die Schleifen brauche ich zB, um über die einzelnen Zuordnungseinheiten 
einer Datei bzw. eines Ordners zu iterieren.

~void~
von -_- (Gast)


Lesenswert?

sowas?
1
#define ITERATION( adr ) do{ ladeAdresse(adr);tuWas();tuWasAnderes(); adr=nextAdresse();}while(adr);

aber meinst nicht das ne funktion schoener waer?
von theVoid (Gast)


Lesenswert?

-_- schrieb:
> sowas?
> #define ITERATION( adr ) do{ ladeAdresse(adr);tuWas();tuWasAnderes(); 
adr=nextAdresse();}while(adr);

Naja, fast^^
da sich "tuWas" bzw. "tuWasAnderes" ändern können, müsste das wohl 
anders aussehen.

-_- schrieb:
> aber meinst nicht das ne funktion schoener waer?
Ich wüsste nicht, dass das mit einer (inline)-Funktion so möglich 
wäre...

~void~
von -_- (Gast)


Lesenswert?

hmh
guck dir das mal an:

http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html#Concatenation

damit solltest dir was basteln koennen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.