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.
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?
Seltsame Makros kann man oft dadurch ergründen, dass man sich die
verwendenden Stellen ansieht.
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?
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.
Karl heinz Buchegger schrieb:> Kann man so nicht sagen.> Zeig doch mal einen Ausschnitt, wo das eingesetzt wird.
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?
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.
Das ist ein sehr schöner vergleich mit schach^^
zeig mal deinen Programmausschnitt, kann dir sicher helfen.
(sollst es ja nicht ganz posten :)
grüße e-tec
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.
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.