typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
A potem w resize.c:
BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr);
Chcę dowiedzieć się, jak uruchomić
BITMAPFILEHEADER bf
Skrót do BITMAPFILEHEADER?
Wiem tylko
typedef <oldname> <newname>
Jak to się dzieje, po prostu działa?
Z góry dziękuję za pomoc w wyjaśnieniu mi tej kwestii.
Odpowiedź
Zakładam, że pytasz, dlaczego w bmp.h działa. Jeśli nie, wyjaśnij pytanie, a ja zaktualizuję odpowiedź.
W bmp.h:
typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
to tak naprawdę to samo, co instrukcja:
typedef <oldname> <newname>;
W tym konkretnym przypadku <oldname> to właściwie wszystko z następujących:
struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__))
, która jest strukturą anonimową. Pełna instrukcja przyjmuje tę nienazwaną strukturę i tworzy dla niej alias (BITMAPFILEHEADER).
Teraz możesz użyć BITMAPFILEHEADER jako typ, na przykład int lub double. Deklaracja BITMAPFILEHEADER bf rezerwuje wystarczającą ilość pamięci dla zmiennej lokalnej do przechowywania całej struktury.
Komentarze
- Teraz rozumiem. Wielkie dzięki.