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.