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.