Fehlermeldung des GNU-GCC-Compilers
-
Hallo zusammen,
ich hätte eine Frage und hoffe das ihr mir vielleicht weiterhelfen könnt.
Ich versuche gerade ein kleines Programm zu kompilieren, welches folgende #defines enthält:
#define BITWISE_OFFT( x ) ( x >> 3 ) #define BITWISE_MASK( x ) ( 1 << x ( x & 7 ) )
Allerdings meldet der Compiler folgenden Fehler, wenn ich beispielsweise einen Bit setzen möchte anhand der oben genannten Makros:
Fehler: gerufenes Objekt "Variablenname" ist keine Funktion
Woran könnte das liegen? Über hilfreiche Tipps würde ich mich sehr freuen.
Grüße
Thomas
-
Hi
Beim unteren Makro fehlt zwischen dem ersten x und der Klammer ein Operator.
-
Hallo CJosef,
vielen vielen Dank. Durch dich habe ich den Fehler entdeckt.
#define BITWISE_MASK( x ) ( 1 << ( x & 7 ) )
So ist es richtig. Oh je bin ich blind. Vielen vielen Dank.
-
Ich würde da noch jeweils ein Paar Klammern spendieren:
#define BITWISE_OFFT( x ) ( (x) >> 3 ) #define BITWISE_MASK( x ) ( 1 << ( (x) & 7 ) )
Dann geht nämlich auch
BITWISE_OFFT(x + 3)
und so. Besser noch, wenn dein Compiler C99 spricht: static inline-Funktionen.
-
Hallo seldon,
cool.
Danke für den Tipp mit den Klammern.
-
Stephan84 schrieb:
Hallo seldon,
cool.
Danke für den Tipp mit den Klammern.
Wenn das nicht in deinem Buch/Tutorial steht, ist es Schrott.
-
seldon schrieb:
Ich würde da noch jeweils ein Paar Klammern spendieren:
Ohja, unbedingt!
Da hab ich voll gepennt, wo ist der Schande-Smiley