Frage zu #define mit mehreren Werten, art array

Gast #3418326
Lesenswert?
• ▲
▼
Ich habe letztens irgendwo in einem code sowas hier gesehen:

#define test 10
#define MODI  255, 150, 15,test


Ich kann dazu keine näheren Infos finden.
Ich fände es sehr elegant wenn man den PWM duty cycle, im Programmkopf 
auf verschiedene modi definieren könnte.
Kann mir bitte jemand erläutern was es mit so einem #define mit mehreren 
Werten auf sich hat? Und wie man darauf zugreift?

Danke Markus
Gast #3418360
Lesenswert?
• ▲
▼
bisher habe ich einfach ein array, dass array jetzt einfach mit dem 
define zu füllen anstatt direkt mit den Werten macht nicht so einen 
großen Sinn...
Vielleicht habe ich mir da was eingebildet was gar nicht da war....

Danke
#3418376
Lesenswert?
• ▲
▼
Markus schrieb:
> bisher habe ich einfach ein array, dass array jetzt einfach mit dem
> define zu füllen anstatt direkt mit den Werten macht nicht so einen
> großen Sinn...

Das kommt drauf an. Im Zusammenspiel mit anderen Präprozessor 
Anweisungen kann das durchaus Sinn machen
1
#ifdef TEST_MODE
2
#define MODI 10, 20, 30, 40
3
#else
4
#define MODI 1, 2, 4, 5
5
#endif
6

7
uint8_t PWM_Values[] = { MODI };

je nachdem, ob das Makro TEST_MODE vor dieser Codestelle definert war 
oder nicht, wird das Array mit anderen Werten initialisiert, was zb zum 
Debuggen nützlich sein kann, weil sich bei einer 8-Bit PWM die PWM Werte 
für 10, 20, 30, 40 mit einer LED gut unterscheiden lassen, die Werte für 
1, 2, 4 und 5 aber vielleicht nicht.

Oder vielleicht 'errechnet' sich einer der Werte bereits zur Compilezeit 
aus einem anderen Wert zb der µC-Taktfrequenz die in F_CPU steht.

Ob etwas Sinn macht oder nicht, kann man nicht a priori an irgendetwas 
fest machen. Allerdings: Der Präprozessor macht Textersetzungen, ehe der 
Compiler den Programmtext zu Gesicht bekommt. Nicht mehr und nicht 
weniger. Was du dann daraus machst, ist deine Sache.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.