温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c - Conflicting types error for function taking void* in public API and typed* under the hood

c - 函数在公共API中采用void *并在后台输入*的类型冲突

发布于 2020-03-27 11:15:02

我正在尝试建立一个第三方库,该库具有在公共标头中定义的功能,例如

void reset(void* instance);

并在执行中

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

而且我遇到了一个冲突的类型编译器错误。现在看来,对我而言,表面上的原因显而易见。作者使用的是MSVC,而我使用的是设置为C99标准的gcc,也许这就是为什么它可以在作者的计算机上工作的原因?在不希望instance_type通过公共接口公开的约束下,我可以做些什么最小的修改

查看更多

查看更多

提问者
learnvst
被浏览
95
John Bollinger 2019-07-03 22:36

在不希望instance_type通过公共接口公开的约束下,我可以做些什么最小的修改

该定义必须与标题中的声明一致。如果您不想instance_type在公共API中公开,则意味着修改定义以匹配标头:

void reset(void* _instance) {
   instance_type* instance = _instance;
   ...
}