Frage zu #define

Gast #2786080
Kommt drauf an welches Ergebnis zu haben willst.

Bei #define PUNKT  '.'

ersetzt der Präprozessor die folgende Anweisung :

char zeichen=PUNKT; mit char zeichen='.';


Bei #define PUNKT  .

ersetzt der Präprozessor die folgende Anweisung :
char zeichen=PUNKT; mit char zeichen=.;
was wahrscheinlich nicht erwünscht ist.

Ist halt nur eine Textuelle Ersetzung.
Gast #2786084
Beide kann richtig sein. Es kommt drauf an, wo Du die Definition 
verwenden willst. Da der Punkt alleine nicht zur C Syntax gehört, 
wolltest Du warscheinlich '.' oder "." definieren.

Aber bei einem Plus Zeichen könnte es auch ohne Anführungszeichen Sinn 
machen:

#define PLUS +

int a= 3 PLUS 4;
(Firma: guloshop.de) #2786137
Peter II schrieb:
> hatte ich auch gedacht, wird aber nicht gehen, das leerzeichen bekommt
> man nicht weg.

Ich glaub, innerhalb von weiteren defines ist das schon möglich:
1
#define PUNKT .
2
#define xy(links,rechts) links##PUNKT##rechts
3

4
a= xy(struktur,element);  // ergibt: a= struktur.element;

(Habs aber grad nicht ausprobiert...)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.