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
Der C-Präprozessor kann einfache Ausdrücke vergleichen. Aber was du vergleichen willst ist
1 | #if (int *)==(int *)
|
Diese Syntax ist dem Präprozessor fremd, denn * ist eine Multiplikation. Und rate mal was
1 | #define A x
|
2 | #define B y
|
3 | |
4 | #if A==B
|
5 | #warning gleich
|
6 | #else
|
7 | #warning ungleich
|
8 | #endif
|
ergibt Johann
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
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.
Erkläre doch mal, wozu du das brauchst (oder glaubst zu brauchen). Vielleicht lässt sich das eigentliche Ziel ja auch anders erreichen.
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.