Forum: Mikrocontroller und Digitale Elektronik c-Code Verständniss


von Marc K. (dergruenekobold)


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

von g457 (Gast)


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.

von Wolfgang (Gast)


Lesenswert?

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")

von Dennis X. (Gast)


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.

von Marc K. (dergruenekobold)


Lesenswert?

Alo ich möchte nacheinander die chars über spi rausschreiben. Mir fehlt 
aber die umsetzung.

von Marc K. (dergruenekobold)


Lesenswert?

Also ich hab dann eine routine welcher "RF_POWER_UP" übergeben wird. 
Aber wie pflück ich die einzelnen einträge auseinander?

von g457 (Gast)


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>

von Marc K. (dergruenekobold)


Lesenswert?

Klasse danke hat funktioniert.

von Dirk B. (dirkb2)


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.

von Wolfgang (Gast)


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.

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.