typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
E poi in resize.c:
BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr);
Voglio sapere qualche riferimento per eseguire
BITMAPFILEHEADER bf
ottieni una scorciatoia per BITMAPFILEHEADER?
Conosco solo
typedef <oldname> <newname>
Come mai, funziona?
Grazie in anticipo per qualsiasi aiuto nel chiarire questo punto per me.
Risposta
Suppongo che tu stia chiedendo perché il typedef in bmp.h
funziona. In caso contrario, chiarisci la tua domanda e aggiornerò la risposta.
In bmp.h
:
typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
è in realtà la stessa cosa di unistruzione:
typedef <oldname> <newname>;
In questo caso particolare, <oldname>
è in realtà tutto quanto segue:
struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__))
che è una struttura anonima. Listruzione completa accetta questa struttura senza nome e ne fa un alias (BITMAPFILEHEADER
).
Ora puoi utilizzare BITMAPFILEHEADER
come un tipo come int
o double
. La dichiarazione BITMAPFILEHEADER bf
riserva memoria sufficiente per una variabile locale per memorizzare lintera struttura.
Commenti
- Ora capisco. Grazie mille.