typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
Und dann in resize.c:
BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr);
Ich möchte eine Referenz zum Ausführen von
BITMAPFILEHEADER bf
erhalten, eine Abkürzung für BITMAPFILEHEADER?
Ich weiß nur
typedef <oldname> <newname>
Wie kommt es, funktioniert einfach?
Vielen Dank im Voraus für jede Hilfe bei der Klärung dieses Punktes für mich.
Antwort
Ich gehe davon aus, dass Sie fragen, warum das typedef in bmp.h
funktioniert. Wenn nicht, klären Sie bitte Ihre Frage und ich werde die Antwort aktualisieren.
In bmp.h
:
typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER;
ist wirklich dasselbe wie eine Anweisung:
typedef <oldname> <newname>;
In diesem speziellen Fall <oldname>
ist eigentlich alles Folgendes:
struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__))
ist eine anonyme Struktur. Die vollständige Anweisung verwendet diese unbenannte Struktur und erstellt einen Alias dafür (BITMAPFILEHEADER
).
Jetzt können Sie BITMAPFILEHEADER
als Typ wie int
oder double
. Die Deklaration BITMAPFILEHEADER bf
reserviert genügend Speicher für eine lokale Variable, um die gesamte Struktur zu speichern.
Kommentare
- Jetzt verstehe ich. Vielen Dank.