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
-
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