BITMAPFILEHEADER bf i resize.c (Svenska)

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *