typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
A pak v resize.c:
BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr);
Chci vědět nějaký odkaz na spuštění
BITMAPFILEHEADER bf
získat zkratku pro BITMAPFILEHEADER?
Já jen vím
typedef <oldname> <newname>
Jak to přijde, prostě funguje?
Předem děkuji za pomoc s objasněním tohoto bodu.
Odpověď
Předpokládám, že se ptáte, proč se typedef v bmp.h
funguje. Pokud ne, upřesněte prosím svou otázku a já aktualizuji odpověď.
V bmp.h
:
typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
je opravdu to samé jako prohlášení:
typedef <oldname> <newname>;
V tomto konkrétním případě <oldname>
je ve skutečnosti všechno z následujícího:
struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__))
což je anonymní struktura. Celý příkaz přebírá tuto nepojmenovanou strukturu a vytvoří pro ni alias (BITMAPFILEHEADER
).
Nyní můžete použít BITMAPFILEHEADER
jako typ jako int
nebo double
. Deklarace BITMAPFILEHEADER bf
rezervuje dostatek paměti pro místní proměnnou pro uložení celé této struktury.
Komentáře
- Teď už chápu. Mnohokrát děkuji.