BITMAPFILEHEADER bf in resize.c (Deutsch)

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.