2

关于 binpacking 示例中定义的阅读器插件的问题。我在接口方法(文件 reader_bpa.c)中找到了以下声明,

 SCIP_READERDATA* readerdata;
 readerdata = NULL;

我知道 SCIP_READERDATA 在文件 type_reader.h 中定义:

typedef struct SCIP_ReaderData SCIP_READERDATA;

但是,结构 SCIP_ReaderData 未在 binpacking 读取器中定义,因此“SCIP_READERDATA* readerdata;”的实际结构是 参考?readerdata 是什么类型的指针?

PS:我注意到 SCIP 中的默认阅读器有类似的用法。

4

1 回答 1

2

如果我没记错的话,这更像是一个 C 问题而不是 SCIP 问题。接口函数 SCIPincludeReader() 和 SCIPincludeReaderBasic() 需要一个指向读取器数据的指针作为最后一个参数。struct SCIP_ReaderData阅读器数据应该允许插件作者通过声明相应的许多其他插件来将任意数据与其阅读器插件连接。如果你试图对指针做任何事情,例如,使用 为其分配内存SCIPallocMemory(scip, &readerdata),你会得到编译器错误,因为指针引用了一个不完整的类型,即struct SCIP_ReaderData.

可以找到有关不完整类型的更多有用信息,例如,here

关键是,该示例使用它来更清楚地将哪些参数传递给SCIPIncludeReaderBasic()-function,否则您会看到 NULL

于 2015-11-27T16:07:31.267 回答