typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
Și apoi în resize.c:
BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr);
Vreau să știu câteva referințe pentru a rula
BITMAPFILEHEADER bf
obțineți o scurtătură pentru BITMAPFILEHEADER?
Știu doar
typedef <oldname> <newname>
Cum se întâmplă, doar funcționează?
Vă mulțumesc anticipat pentru orice ajutor pentru a clarifica acest punct pentru mine.
Răspuns
Presupun că vă întrebați de ce tipul introdus în bmp.h
funcționează. Dacă nu, vă rugăm să vă clarificați întrebarea și voi actualiza răspunsul.
În bmp.h
:
typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
este cu adevărat același lucru ca o afirmație:
typedef <oldname> <newname>;
În acest caz particular, <oldname>
este de fapt toate următoarele:
struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__))
care este o structură anonimă. Declarația completă ia această structură fără nume și creează un alias pentru aceasta (BITMAPFILEHEADER
).
Acum puteți utiliza BITMAPFILEHEADER
ca tip ca int
sau double
. Declarația BITMAPFILEHEADER bf
rezervă suficientă memorie pentru ca o variabilă locală să stocheze întreaga structură.
Comentarii
- Acum inteleg. Mulțumesc mult.