c-Code Verständniss

OP #4568002
Lesenswert?
• ▲
▼
Hallo,
ich hab da ein Verständnissproblem mit einem #define macro. Ich habe 
folgendes:

#define RF_POWER_UP 0x02, 0x01, 0x00, 0x01, 0xC9, 0xC3, 0x80

Wie ich bei einem array auf die einzelnen Einträge zugreife weiss ich. 
Aber wie mach ich das bei dem #define ?

Danke schon mal
Gast #4568010
Lesenswert?
• ▲
▼
> Wie ich bei einem array auf die einzelnen Einträge zugreife weiss ich.
> Aber wie mach ich das bei dem #define ?

Gar nicht. Aber Du könntest das Makro in ein Array expandieren. Aber wie 
so oft hängt eine Gute Umsetzung davon ab, was Du ∗eigentlich∗ erreichen 
willst.
Gast #4568015
Lesenswert?
• ▲
▼
Wie der Gast schon geschrieben hat geht da so wirklich nicht. Du hast 
hier wahrscheinlich ein define, welcher einfach einer Funktion gegeben 
wird und dadurch ein Satz an Übergabeparameter realisiert um den 
POWER_UP zu realisieren. Dadurch lässt sich da im Code kompakt schreiben 
und du kannst schon fast dir den Kommentar sparen, was der 
Funktionsaufruf mit exakt den Parametern macht.
Gast #4568025
Lesenswert?
• ▲
▼
> Alo ich möchte nacheinander die chars über spi rausschreiben. Mir fehlt
> aber die umsetzung.
1
const char powerUp[] = { RF_POWER_UP };
2
spi_send_char_array_thing(powerUp, sizeof(powerUp));
</pseudocode>
#4568079
Lesenswert?
• ▲
▼
Wolfgang schrieb:
> Marc K. schrieb:
>> Aber wie mach ich das bei dem #define ?
>
> /#define/ hat direkt gar nichts mit deinem C-Code zu tun. Das ist nur
> eine Anweisung für den Präprozessor, eine Textersetzung vorzunehmen.
> ("RF_POWER_UP" ersetzen durch "0x02, 0x01, 0x00, 0x01, 0xC9, 0xC3,
> 0x80")

"RF_POWER_UP" ist ein Stringliteral. In denen ersetzt der Präprozessor 
nicht.
Gast #4568280
Lesenswert?
• ▲
▼
Dirk B. schrieb:
> "RF_POWER_UP" ist ein Stringliteral. In denen ersetzt der Präprozessor
> nicht.

Wäre es dem Herrn so vielleicht rechter:
RF_POWER_UP ersetzen durch /0x02, 0x01, 0x00, 0x01, 0xC9, 0xC3,
0x80/

Da spinnt leider die Forensoftware und setzt die Liste nicht kursiv.

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