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
> 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.
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")
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.
Alo ich möchte nacheinander die chars über spi rausschreiben. Mir fehlt aber die umsetzung.
Also ich hab dann eine routine welcher "RF_POWER_UP" übergeben wird. Aber wie pflück ich die einzelnen einträge auseinander?
> 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>
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.