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.