Das könnte etwas zu offensichtlich sein. Allerdings konnte ich die spezifische Antwort nicht finden, obwohl viele stackoverflow Threads über verschiedene Aspekte davon sprechen.
%Vor%Ich kompiliere dieses Prog als -
%Vor%Ich bekomme einen Fehler -
%Vor%Ich denke, ich vermisse etwas sehr Offensichtliches und Direktes. Aber kann es nicht genau lokalisieren: - /
Danke!
1) Der Operator
sizeof
gibt die Anzahl der Bytes in der Objektdarstellung seines Operanden an. Der Operand ist Entweder ein Ausdruck, der ein nicht evaluierter Operand ist (Abschnitt 5), oder eine eingeklammerte Typ-ID . (Hervorhebung von mir)
In Ihrem Fall handelt es sich um eine type-ID , die in Klammern gesetzt werden muss. Was eine Typ-ID ist, wird in 8.1 Typnamen [dcl.name] beschrieben.
sizeof tmp
sollte sizeof (tmp)
sein.
Wie in
if (c <= sizeof tmp)
sollte if (c <= sizeof (tmp))
sein.
Yup, hübsch "offensichtlich und geradlinig".