BITMAPFILEHEADER bf in resize.c

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

En dan in resize.c:

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

Ik wil een referentie weten om uit te voeren

BITMAPFILEHEADER bf 

een afkorting voor BITMAPFILEHEADER?

Ik weet het alleen

typedef <oldname> <newname> 

Hoe komt het, werkt gewoon?

Bij voorbaat dank voor alle hulp bij het verduidelijken van dit punt voor mij.

Antwoord

Ik “neem aan dat je vraagt waarom de typedef in bmp.h werkt. Als dit niet het geval is, verduidelijk dan uw vraag en ik “zal het antwoord bijwerken.

In bmp.h:

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

is eigenlijk hetzelfde als een statement:

typedef <oldname> <newname>; 

In dit specifieke geval <oldname> is eigenlijk al het volgende:

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

wat een anonieme structuur is. De volledige instructie neemt deze naamloze structuur en maakt er een alias voor (BITMAPFILEHEADER).

Nu kun je BITMAPFILEHEADER als een type zoals int of double. De declaratie BITMAPFILEHEADER bf reserveert voldoende geheugen voor een lokale variabele om die hele structuur op te slaan.

Opmerkingen

  • Nu begrijp ik het. Heel erg bedankt.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *