关于binpacking示例中定义的reader插件的问题 . 我在接口方法(文件reader_bpa.c)中找到了以下声明,
SCIP_READERDATA* readerdata;
readerdata = NULL;
我知道SCIP_READERDATA是在文件type_reader.h中定义的:
typedef struct SCIP_ReaderData SCIP_READERDATA;
但是,struct SCIP_ReaderData没有在binpacking reader中定义,因此它是“SCIP_READERDATA * readerdata”的实际结构 . 参考? readerdata是什么类型的指针?
PS:我注意到SCIP中的默认读者具有相似的用法 .
1 回答
如果我没有弄错的话,那就更像是一个C问题,而不是一个SCIP问题 . 接口函数SCIPincludeReader()和SCIPincludeReaderBasic()需要指向读取器数据的指针作为最后一个参数 . 读者数据应该允许插件作者通过声明与其他插件一样多的相应的
struct SCIP_ReaderData
来将任意数据与其读取器插件连接起来 . 如果您尝试对指针执行任何操作,例如,使用SCIPallocMemory(scip, &readerdata)
为其分配内存,则会出现编译器错误,因为指针指的是 an incomplete type ,即struct SCIP_ReaderData
.找到了有关不完整类型的更多有用信息,例如here
关键是,该示例使用它来更清楚地将哪些参数传递给
SCIPIncludeReaderBasic()
-function,否则您将看到NULL
.