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