Пишу маленькую библиотеку. Она использует libxml2. В хидере определил структуру. Цель: скрыть типы данных libxml2.
struct fb2_str_file {
void *doc;
void *cur;
};
Указатель на нее программа-тестер кидает либе. В либе в свою очередь открываю файл
int fb2_open_file(const char *docname, struct fb2_str_file *file) {
file->doc = xmlParseFile(docname);
Без ошибок. Получаю ноду
file->cur = xmlDocGetRootElement(file->doc);
После чего вот здесь начинаются непонятки.
if (xmlStrcmp((*file->cur)->name, (const xmlChar *) "FictionBook")) {
На этой строчке gcc пишет что
warning: dereferencing ‘void *’ pointer [enabled by default]
error: void value not ignored as it ought to be
Значит, file это указатель на структуру, в которой указатель на структуру с полем name. Вроде конструкция правильная. Но компилятор хочет чтобы я привел void к типу. Я не догоняю как это сделать.