BITMAPFILEHEADER bf em resize.c

typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER; 

E depois em resize.c:

BITMAPFILEHEADER bf fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr); 

Quero saber algumas referências para executar

BITMAPFILEHEADER bf 

obter uma abreviação para BITMAPFILEHEADER?

Eu só sei

typedef <oldname> <newname> 

Por que, simplesmente funciona?

Agradeço antecipadamente por qualquer ajuda de esclarecer este ponto para mim.

Resposta

Presumo que você esteja perguntando por que o typedef em bmp.h funciona. Caso contrário, esclareça sua pergunta e atualizarei a resposta.

Em bmp.h:

typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) BITMAPFILEHEADER; 

é realmente a mesma coisa que uma declaração:

typedef <oldname> <newname>; 

Neste caso específico, <oldname> é na verdade tudo o seguinte:

struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } __attribute__((__packed__)) 

que é uma estrutura anônima. A instrução completa pega essa estrutura sem nome e cria um alias para ela (BITMAPFILEHEADER).

Agora você pode usar BITMAPFILEHEADER como um tipo como int ou double. A declaração BITMAPFILEHEADER bf reserva memória suficiente para uma variável local armazenar toda a estrutura.

Comentários

  • Agora eu entendo. Muito obrigado.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *