Ошибка конфликтующих типов для функции, принимающей void * в публичном API и набираемой * под капотом - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь создать стороннюю библиотеку, в которой есть функция, определенная в общедоступном заголовке как таковая

void reset(void* instance);

И в реализации

void reset(instance_type* instance) {
   ...
}

И яполучение ошибки компиляции конфликтующих типов.Теперь это кажется очевидным, почему мне на поверхности.Автор использовал MSVC, а я использую gcc, настроенный на стандарт C99 - может быть, поэтому он работал на машине авторов?Какую минимальную модификацию я могу сделать, чтобы заставить ее строить в условиях ограничения, которое я не хочу показывать instance_type через открытый интерфейс?

1 Ответ

5 голосов
/ 03 июля 2019

Какую минимальную модификацию я могу сделать, чтобы заставить ее строить при ограничении, которое я не хочу выставлять instance_type через открытый интерфейс?

Для определения необходимо согласиться с декларацией в шапке. Если вы не хотите показывать instance_type в общедоступном API, то это означает изменение определения в соответствии с заголовком:

void reset(void* _instance) {
   instance_type* instance = _instance;
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...