#define problem

OP #2116889
Lesenswert?
• ▲
▼
Hy,
Ich möchte über eine define Anweißung eine Konstante verändern.
Damit ich nicht so viel von Hand machen muss.

Ich möchte mit der Anweißung:
1
#define USART                    USARTC0
eine Define beeinflussen.
Entweder wenn das irgendwie geht.
Über eine Define in der dann das USARTC0 ersetzt wird mit z.b. USARTD0
1
#define DMA_TRIG_SEND    DMA_CH_TRIGSRC_USARTC0_DRE_gc

Oder auch über eine #if abfrage.
1
#if USART==USARTC0
2
#define DMA_TRIG_SEND    DMA_CH_TRIGSRC_USARTC0_DRE_gc
3
#elif USART==USARTD0
4
#define DMA_TRIG_SEND    DMA_CH_TRIGSRC_USARTD0_DRE_gc
5
.....
6
#endif
USARTC0 wiederum ist mittels #define als Zeiger definiert, welcher auf 
0x8A0 zeigt. In einer #if Abfrage kann ich nur Integer vergeleichen.
Jemand eine Idee wie ich das realisieren kann?

Gruß Hans
Moderator Persönliche Seite #2116900
Lesenswert?
• ▲
▼
Rufus Τ. Firefly schrieb:
> Hans W. schrieb:
>> Ich möchte mit der Anweißung:
>
> Was ist das?

Na, eine Handlung, die etwas weiß macht.  Also mit weißer Farbe
anstreicht. :-)

Das Problem lässt sich durch den Verkettungoperator ## lösen:
1
#define USART                    USARTC0
2
#define DMA_CH(a,b,c)    a##b##c
3
#define DMA_TRIG_SEND    DMA_CH(DMA_CH_TRIGSRC_,USART,_DRE_gc)
4

5
DMA_TRIG_SEND

ergibt mit gcc -E:
1
# 1 "foo.c"
2
# 1 "<built-in>"
3
# 1 "<command line>"
4
# 1 "foo.c"
5

6

7

8

9
DMA_CH_TRIGSRC_USART_DRE_gc

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.