Verwenden von sizeof-Operator für eine typedef-ed-Struktur

8

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!

    
sskanitk 16.10.2012, 22:55
quelle

3 Antworten

10

5.3.3 Größe von [expr.sizeof]

  

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

    
Luchian Grigore 16.10.2012, 22:56
quelle
11

Der Operator sizeof hat zwei Formen:

%Vor%

Da Sie ihm einen Typ geben, benötigen Sie die Klammer, sizeof(tmp)

    
nos 16.10.2012 22:58
quelle
3

fügen Sie Klammern um tmp : sizeof(tmp)

hinzu     
Iowa15 16.10.2012 22:57
quelle

Tags und Links