首页 > 解决方案 > 函数在公共 API 中采用 void* 并在后台键入 * 的冲突类型错误

问题描述

我正在尝试构建一个第 3 方库,该库具有在公共标头中定义的函数

void reset(void* instance);

并且在实施中

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

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

标签: cfunctiontypes

解决方案


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

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

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

推荐阅读