如图所示,按照官网提供的例程读取tiff文件,并打印读取的值时,提示:
Subscript of pointer to incomplete type 'void'
代码如下:
    //---打开tiff文件的测试
    
    
    TIFF* tif = TIFFOpen("a.tif", "r");
    if(tif){
        uint32 imageLength;
        tsize_t scanline;
//        unsigned char* buf;
        tdata_t* buf;
        uint32 row;
        uint32 col;
        
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageLength);
        scanline = TIFFScanlineSize(tif);
//        buf = (unsigned char *)_TIFFmalloc(scanline);
        buf = (tdata_t*)_TIFFmalloc(scanline);
        printf("Scanlinesize = %zu", scanline);// %zu用来打印tsize_t
        for(row=0;row <imageLength;row++){
            TIFFReadScanline(tif, buf, row);
            for(col=0;col<scanline;col++){
                printf("buf[%d][%d]=%d", row,col,buf[col]);
//                printf("%d", buf[col]);//报错:Subscript of pointer to incomplete type 'void'
                                        //解决方法,将buf的类型由tdata_t改成unsigned char*
            printf("\n");
            }
        }
        _TIFFfree(buf);
        TIFFClose(tif);
    }报错情况如图所示:
 
 
报错原因:
可能是buf 类型在分配内存的时候应该是指针类型,如下:
        buf = (unsigned char *)_TIFFmalloc(scanline);
 //        buf = (tdata_t*)_TIFFmalloc(scanline);
使用tdata_t* 和unsigned char *类型都可以编译成功,但是打印出的数据不同:
tdata_t* 时,打印的数据如下:

使用unsigned char * 时,打印的数据如下:

貌似使用unsigned char * 时获取的数据应该是正确的。


![[附源码]Python计算机毕业设计Django疫情防控管理系统](https://img-blog.csdnimg.cn/1de5cd4dfae84035b7c5f2ea5a9ef3ba.png)










![Matplotlib入门[05]——注释与标签](https://img-blog.csdnimg.cn/72b8144eed174762bc6d6d8cbf9a846b.png)




