Forum: Compiler & IDEs Bedeutung von ##


von Frank H. (avrnooby)


Lesenswert?

Hallo,

im Quelltext von Shaoziyang eines Bootloaders ( 
http://groups.google.com/group/avrub?hl=en ) bin ich auf Zeilen wie 
folgt gestossen:
1
//internal use macro
2
#define CONCAT(a, b)       a ## b
3
#define CONCAT3(a, b, c)   a ## b ## c
4
5
//register of PORT and bit define
6
#define PORTREG(No)        CONCAT(PORT, No)
7
#define PINREG(No)         CONCAT(PIN, No)
8
#define UDRREG(No)         CONCAT(UDR, No)

Was bedeuted das ## ? Hab ich so noch nie gesehen.

MfG

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Frank Heluk wrote:

> Was bedeuted das ## ? Hab ich so noch nie gesehen.

Das gibt es aber seit ANSI-C89/ISO-C90 bereits.  Außerdem ist der
Name des Makros, in dem es benutzt wird, eigentlich selbst
erklärend: `concat'.  Es verbindet die beiden Seiten zu einem Symbol
auf Präprozessorebene.  Damit kann man also beispielsweise aus den
Teilstücken ,PORT' und ,A' das Symbol ,PORTA' generieren.

von Christoph M. (fakulatus)


Lesenswert?

Also benutzt wird dies im Style von

c=CONCAT(Hallo, Echo)

und raus kommt: c=HalloEcho

oder

c=CONCAT(1,2)
c=12

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.