SCIP: о & quot; SCIP_ReaderData & quot; в примере упаковки бина

Вопрос о плагине читателя, определенном в примере с бинпэкингом. Я нашел следующее объявление в методе интерфейса (файл 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;» ссылка на? что это за указатель

PS: я заметил, что стандартные читатели в SCIP имеют аналогичное использование.

2

Решение

Это больше вопрос C, чем вопрос SCIP, если я не ошибаюсь. Интерфейсные функции SCIPincludeReader () и SCIPincludeReaderBasic () требуют указатель на данные считывателя в качестве последнего аргумента. Предполагается, что данные читателя позволяют автору плагина соединять произвольные данные со своим плагином читателя, объявляя соответствующий struct SCIP_ReaderData как и многие другие плагины.
Если вы попытаетесь что-то сделать с указателем, например, выделите для него память, используя SCIPallocMemory(scip, &readerdata), вы получите ошибки компилятора, потому что указатель ссылается на неполный тип, а именно struct SCIP_ReaderData,

Более полезная информация о неполных типах найдена, например, Вот

Дело в том, что пример использует это, чтобы прояснить, какие аргументы передаются SCIPIncludeReaderBasic()-функция, где вы бы увидели NULL иначе.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]