Forum: Compiler & IDEs AVR GCC Verwendung von bool als Funktionsparameter oder return-Wert


von der A. (the_a)


Lesenswert?

Hallo,

ich wollte mal fragen, ob es Vorteile gibt bei der Verwendung von bool 
als Funktionsparameter oder return-Wert.

Der Compiler könnte ja den wert in einem Status-Flag speichern und dann 
auswerten?
Werden mehrere bools auch auf ein 8-bit Wert automatisch gemappt oder 
werden separate Variablen angelegt?

Ist bei Funktionsparametern ein Status register mit mehreren Flags 
(Bitpositionen) zwei einzelnen bool Parametern vorzuziehen?

Zumindest habe ich bei gcc inline assembler noch keine Entsprechung 
gefunden.

Danke für eure Kommentare?

Adib.
--

von Roland H. (batchman)


Lesenswert?

> Ist bei Funktionsparametern ein Status register mit mehreren Flags
> (Bitpositionen) zwei einzelnen bool Parametern vorzuziehen?

Wenn es nicht gerade ein ganz kleiner µC ist, dann weder noch, sondern 
enums mit C++. Das dokumentiert, und es wird gleichzeitig vom Compiler 
geprüft. Beim "Refactoring" sorgt auch der Compiler dafür, dass es 
weniger Probleme gibt. Eclipse kann die eingesetzten enum-Werte mittels 
"References" besser auffinden als reine Textsuche.

Was liest sich besser: x(true, false) [mit bool] oder x(State_Enable, 
Mode_Immediate) [die enum-Variante] ?

Natürlich geht auch x(ENABLE | IMMEDIATE) [mehrere Flags] oder im ersten 
Fall lesbarer mit #define/const. Aber nur mit C++ und enums kann er auch 
prüfen, ob es inhaltlich passt.

> Werden mehrere bools auch auf ein 8-bit Wert automatisch gemappt oder
> werden separate Variablen angelegt?

M. W. wird hier pro bool (also pro bit) ein ganzes byte "verschwendet". 
Den Luxus gönne ich mir. -fshort-enums sorgt dafür, dass es bei enums 
nicht "ausufert".

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.
Lade...