我试图创建一个包含多个指向结构的结构,因为我有一个读取 img 文件的程序,并且取决于这个文件是 16、24 还是 32 位,我想这样对待它。当我尝试使我的像素指针指向其他结构之一时出现问题(“从类型'Pixel24'分配给类型'Pixel'时不兼容的类型”)。我真的不知道如何使这项工作,所以我真的需要一些帮助。
我还想在打开文件时检查特定的文件扩展名,如果它是正确的文件扩展名,我只想处理它,但我不知道该怎么做。
typedef struct pixel16 {
uint8_t R, G, B;
}__attribute__((packed)) Pixel16;
typedef struct pixel24 {
uint8_t R, G, B;
}__attribute__((packed)) Pixel24;
typedef struct pixel32 {
uint8_t R, G, B, A;
}__attribute__((packed)) Pixel32;
typedef struct pixel{
Pixel16 pixel16;
Pixel24 pixel24;
Pixel32 pixel32;
}__attribute__((packed)) Pixel;
typedef struct file{
Header *imageHeader;
Pixel *imageData;
}File
void something(File file){
Pixel *pixelptr;
if(file->imageHeader.pixelDepth == 16)
*pixelptr = file->imageData->pixel16;
else if(file->imageHeader.pixelDepth == 24)
*pixelptr = file->imageData->pixel24;
else
*pixelptr = file->imageData->pixel32;
}