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.