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 😃


Anmelden zum Antworten