BITMAPFILEHEADER bf i resize.c

typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER; 

Og derefter i resize.c:

BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr); 

Jeg vil gerne vide noget henvisning til at køre

BITMAPFILEHEADER bf 

få en stenografi for BITMAPFILEHEADER?

Jeg ved kun

typedef <oldname> <newname> 

Hvordan kommer det bare?

På forhånd tak for enhver hjælp til at afklare dette punkt for mig.

Svar

Jeg antager, at du spørger, hvorfor typedef i bmp.h fungerer. Hvis ikke, skal du afklare dit spørgsmål, så opdaterer jeg svaret.

I bmp.h:

typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER; 

er virkelig det samme som en udsagn:

typedef <oldname> <newname>; 

I dette særlige tilfælde <oldname> er faktisk alt af følgende:

struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) 

som er en anonym struktur. Den fulde erklæring tager denne unavngivne struktur og laver et alias for den (BITMAPFILEHEADER).

Nu kan du bruge BITMAPFILEHEADER som en type som int eller double. Erklæringen BITMAPFILEHEADER bf reserverer nok hukommelse til en lokal variabel til at gemme hele strukturen.

Kommentarer

  • Nu forstår jeg. Mange tak.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *