BOOST_STATIC_ASSERT Verhalten



  • Hallo,

    da ich eine Lösung suche, wie ich während des Kompilierens überprüfen kann, ob ein int eine Länge von 4 Bytes hat. Ich habe auch BOOST_STATIC_ASSERT gefunden und dabei ein merkwürdiges Verhalten gefunden.

    Folgendes wird fehlerfrei kompiliert:

    BOOST_STATIC_ASSERT(sizeof(int) == 4);
    

    Folgendes erzeugt beim Mircosoft Visual 2005 Compiler die Fehlermeldung: error C2059: syntax error : )

    BOOST_STATIC_ASSERT(sizeof int == 4);
    

    Warum? sizeof ist doch ein Operator und man braucht das Argument nicht zu klammern?

    Gruss Lars



  • Doch, sizeof verlangt die Klammerung.

    Edit: Halbwissenwarnung, zumindest finde ich es in keinem meiner Bücher anders.

    MfG SideWinder


  • Mod

    Klammern sind nötig, wenn das Argument ein Typ ist, angewendet auf einen Ausdruck sind dagegen keine Klammern erforderlich.

    5.3.3/1
    The sizeof operator yields the number of bytes in the object representation of its operand. The operand is either an expression, which is not evaluated, or a parenthesized type-id.



  • Hallo camper,

    das erklärt es! Danke!

    Gruss Lars


Log in to reply