Was macht (x) & (b) >> (s)?

#1987525
Lesenswert?

Mark M. schrieb:
> ich bin in einem Programm auf das hier gestoßen:
>
1
#define BF(x,b,s) (((x) & (b)) >> (s))
> Mir ist klar, was hier passiert, aber wozu ist sowas gut? Was heißt BF?

Das kann dir wohl nur der Author des Codes beantworten.
Ich denke aber, dass BF Bitfield heißt. Mit dem Makro kannst du wohl x 
mit b maskieren und dann um s nach rechts shiften. Ich sehe aber 
eigentlich keinen Grund das in einem Makro zu tun und nicht einfach 
offen zu coden. Das wäre IMO lesbarer.
#1987568
Lesenswert?

Mark M. schrieb:
> Michael Buesch schrieb:
>> Ich sehe aber
>> eigentlich keinen Grund das in einem Makro zu tun und nicht einfach
>> offen zu coden. Das wäre IMO lesbarer.
>
> Das meine ich auch! Aber das ganze Programm ist voll mit solchen
> hässlichen Makros. Ist das üblich, praktisch oder sonst irgendwas?

Kann man so nicht sagen.
Zeig doch mal einen Ausschnitt, wo das eingesetzt wird.
#2009606
Lesenswert?

Mark M. schrieb:

> Es geht um MSP430-Programmierung. Ich hab hier ne Firmware von TI, die
> modifiziert werden soll. Nun ist der Quelltext nur so gespickt mit
> diesen Makros. Hat jemand einen Tipp, wie ich das Programm angehen soll,
> als Anfänger?

Am besten geht man sowas an, indem man sich aus dem Anfängerstatus 
heraushievt.
Das heißt: erst mal diese Programm beiseite legen, ein C-Buch schnappen 
und da die ersten paar Kapitel auf dem PC durcharbeiten.

Der Vorteil: Es bricht nicht alles auf einmal auf dich herein, sondern 
das Buch baut dein Wissen in logischen und sinnvollen Schritten auf.

Das meiste von dem, was du in diesem Programm sehen wirst, ist höchst 
wahrscheinlich sehr simpel. Nur bricht eben alles auf einmal auf dich 
herein. Und dann verlierst du den Überblick.

So wie beim Schach: Wenn man gleichzeitig die Figuren, ihre möglichen 
Züge und 8 verschiedene Eröffnungsstrategien auf einmal lernen soll, 
dann verliert man sich.
OP #2009635
Lesenswert?

Karl heinz Buchegger schrieb:
> Am besten geht man sowas an, indem man sich aus dem Anfängerstatus
> heraushievt.
> Das heißt: erst mal diese Programm beiseite legen, ein C-Buch schnappen
> und da die ersten paar Kapitel auf dem PC durcharbeiten.

Mit den C-Grundlagen hab ich kein Problem, sondern damit, dass in einer 
Funktion 5 Makros stehen, die nicht nur wiederum Funktionen sind, 
sondern auch noch alle in verschiedenen Headern stehen.

Kann mir da jemand ein gutes Buch empfehlen? Also keines, das mir zum 
100. Mal erklärt, was eine Funktion ist. Hello World kann ich auch schon 
schreiben ;-P Ich suche was, wo auch auf die praktische Anwendung, 
besonders µCs eingegangen wird. Ich kann lange immer die ersten Kapitel 
durcharbeiten, wenn dann nachher irgendwelche µC-Register mit komischen 
Makros abgekürzt sind.
#2009654
Lesenswert?

Mark M. schrieb:
> Karl heinz Buchegger schrieb:
>> Am besten geht man sowas an, indem man sich aus dem Anfängerstatus
>> heraushievt.
>> Das heißt: erst mal diese Programm beiseite legen, ein C-Buch schnappen
>> und da die ersten paar Kapitel auf dem PC durcharbeiten.
>
> Mit den C-Grundlagen hab ich kein Problem, sondern damit, dass in einer
> Funktion 5 Makros stehen, die nicht nur wiederum Funktionen sind,
> sondern auch noch alle in verschiedenen Headern stehen.

Und?
Die sucht man sich einmal zusammen, sieht sich an was sie machen und 
legt sich das in Gedanken beiseite (oder aber macht sich eine Notiz auf 
einem Schmierzettel)

> Kann mir da jemand ein gutes Buch empfehlen? Also keines, das mir zum
> 100. Mal erklärt, was eine Funktion ist. Hello World kann ich auch schon
> schreiben ;-P Ich suche was, wo auch auf die praktische Anwendung,
> besonders µCs eingegangen wird. Ich kann lange immer die ersten Kapitel
> durcharbeiten, wenn dann nachher irgendwelche µC-Register mit komischen
> Makros abgekürzt sind.

Das wirst du in keinem Buch finden.
Denn wie ein Programmautor seine Makros nennt ist ihm überlassen. Und 
wenn er sie SCHMUTZDIPAP nennt, dem Compiler ist das egal.
Als Leser musst du dir nur merken was die Makros bedeuten, wie sie 
expandieren (oder, eh schon wissen, Schmierzettel)

Diese Frage
> Aber das ganze Programm ist voll mit solchen
> hässlichen Makros. Ist das üblich, praktisch oder sonst irgendwas?
kann man daher nicht pauschal beantworten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren