typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
Og deretter i resize.c:
BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr);
Jeg vil vite noe referanse til å kjøre
BITMAPFILEHEADER bf
få en stenografi for BITMAPFILEHEADER?
Jeg vet bare
typedef <oldname> <newname>
Hvordan kommer det til, fungerer bare?
Takk på forhånd for all hjelp til å avklare dette poenget for meg.
Svar
Jeg antar at du spør hvorfor typedef i bmp.h
fungerer. Hvis ikke, kan du avklare spørsmålet ditt, så oppdaterer jeg svaret.
I bmp.h
:
typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
er egentlig det samme som en uttalelse:
typedef <oldname> <newname>;
I dette tilfellet, <oldname>
er egentlig alt av følgende:
struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__))
som er en anonym struktur. Den fulle uttalelsen tar denne ikke-navngitte strukturen og lager et alias for den (BITMAPFILEHEADER
).
Nå kan du bruke BITMAPFILEHEADER
som en type som int
eller double
. Erklæringen BITMAPFILEHEADER bf
reserverer nok minne til at en lokal variabel kan lagre hele strukturen.
Kommentarer
- Nå forstår jeg. Tusen takk.