0
我正在尝试从位图文件中读取头文件。当我编译时,我得到以下错误; “bmp_header_p = bmp-> header”的行中的“错误:赋值中的不兼容类型”。我在这里做错了什么?为什么我会遇到错误:分配中的不兼容类型?
struct _bmpfile {
bmp_header_t header;
bmp_dib_v3_header_t dib;
rgb_pixel_t **pixels;
rgb_pixel_t *colors;
};
typedef struct _bmpfile bmpfile_t;
bool
bmp_get_header_from_file(FILE *filename, bmpfile_t *bmp)
{
bmp_header_t *bmp_header_p;
bmp_header_p = bmp->header;
fseek(filename, 0L, SEEK_SET);
bmp_header_p = malloc(sizeof(bmp->header));
if(14 != fread(bmp_header_p, sizeof(char), 14, filename)) {
perror("message");
return FALSE;
} else {
return TRUE;
}
}
的确。如果它不是一个真正的指针,那就加上'&'来获取变量的地址。 – Jite
调用者分配它的语法是什么? –
struct _bmpfile bf; (这将在堆栈上构建一个,如果你在main()或者你可以控制变量的生命周期的地方(也就是说,当这个函数完成时变量是垃圾),或者你应该这样做:struct _bmpfile * bf =(_bmpfile *)malloc(sizeof(_bmpfile)); 如果您执行自动版本(没有malloc),您将调用您的get_header例程,如下所示:success = bmp_get_header_from_file(file,&bf);否则你会这样做(bmp_get_header_from_file(file,bf);因为bf将是一个指针 – crowder