www.mikrocontroller.net

Forum: Compiler & IDEs mit preprocessor 2 macros vergleichen


Autor: Axel Grabitz (hoxel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
#define ixi 6
#define blub 6
#if ixi==blub
  ...
#endif

aber wenn ich 2 nichtzahlen macros vergleichen will gehts so nicht:

#define ixi (int *)
#define blub (int *)
#if ixi==blub
  ...
#endif

Er schimpft das dem operator * ein wert fehlt.

kann mir jemand helfen?

schönen tag sonst
axel

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der C-Präprozessor kann einfache Ausdrücke vergleichen. Aber was du 
vergleichen willst ist
#if (int *)==(int *)

Diese Syntax ist dem Präprozessor fremd, denn * ist eine Multiplikation.

Und rate mal was
#define A x
#define B y

#if A==B
#warning gleich
#else
#warning ungleich
#endif

ergibt

Johann

Autor: Axel Grabitz (hoxel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß ja das es mit dem == operator nicht geht.
Ich denke ja nur das es so eine funktion wie __define() im preprozessor 
gibt die diesen Vergleich durchführt.
Vieleicht weiß sie jemand.

grüße axel

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Präprozessor kann ausschließlich integer-Arithmetik, sonst nichts.
Ja, er kennt auch einen Operator "defined", aber der liefert als
Ergebnis wiederum einfach nur 0 oder 1, je nachdem, ob sein Argument
ein bereits definierter Makro ist oder nicht.

Nein, Zeichenkettenvergleiche oder sowas gehen damit nicht.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erkläre doch mal, wozu du das brauchst (oder glaubst zu brauchen). 
Vielleicht lässt sich das eigentliche Ziel ja auch anders erreichen.

Autor: Axel Grabitz (hoxel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke jörg,
dir will ich das glauben.
Kann das auch anderst lösen, währe nur so eleganter gewesen.
Vielend Dank für die Hilfe.
Grüße aus dem kalten Lübeck,
Axel

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Axel Grabitz schrieb:

> dir will ich das glauben.

Dann solltest du es Johann aber erst recht glauben. ;-)  Er steckt viel
tiefer in den GCC-Interna drin als ich.

Autor: Axel Grabitz (hoxel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry,
von joerg habe ich schon einigen #xxx angereicherten code gesehen.
daher meine einschätzung.
nun weiss ichs besser.
grüße aus dem kalt - sonnigen lübeck
axel

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.