typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
Och sedan i resize.c:
BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr);
Jag vill veta någon referens att köra
BITMAPFILEHEADER bf
få en förkortning för BITMAPFILEHEADER?
Jag vet bara
typedef <oldname> <newname>
Hur kommer det till, fungerar bara?
Tack på förhand för all hjälp med att klargöra denna punkt för mig.
Svar
Jag antar att du frågar varför typedef i bmp.h
fungerar. Om inte, klargör din fråga, så uppdaterar jag svaret.
I bmp.h
:
typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
är egentligen samma sak som ett uttalande:
typedef <oldname> <newname>;
I det här fallet, <oldname>
är faktiskt allt av följande:
struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__))
vilket är en anonym struktur. Hela uttalandet tar den här namngivna strukturen och gör ett alias för den (BITMAPFILEHEADER
).
Nu kan du använda BITMAPFILEHEADER
som en typ som int
eller double
. Deklarationen BITMAPFILEHEADER bf
reserverar tillräckligt med minne för en lokal variabel för att lagra hela strukturen.
Kommentarer
- Nu förstår jag. Tack så mycket.