PreprozesorAnweisungen mit cast



  • Die PreprozesorAnweisungen mit cast (int)

    #define Mes 10
    #if (int) Mes*3/4
    const int botto=5;
    #endif

    führen zu fatal error C1017: Ungueltiger Ausdruck fuer Ganzzahlkonstante

    Die PreprozesorAnweisungen ohne cast

    #define Mes 10
    #if Mes*3/4
    const int botto=5;
    #endif

    führen zu keinem error.

    Wie kann man erreichen, dass nur der ganzzahlige Anteil von Mes*3/4 als Konstantenausdruck von #if verwendet wird.
    Es soll für beliebige Werte für Mes, als nicht nur für 10 funktionieren.



  • Afaik rechnet der Präprozessor sowieso mit Ganzzahlen. (und selbst wenn nicht - der Ausdruck "Mes*3/4" wird in Ganzzahlarithmetik berechnet, weil keine Gleitkomma-Zahlen beteiligt sind)

    PS: Übrigens ist der Ausdruck als #if Bedingung eher sinnlos.


Anmelden zum Antworten