如何从 c 调用 opaque_wrapper 结构?

How to call opaque_wrapper struct from c?

这个问题是指我之前的问题:

所以请先阅读那篇文章,以便您了解我现在所处的位置。

我想知道如何调用我的结构: ClassName* c = newClassName(struct opaque_wrapper* instance); 在 c 中,没有出现此错误: error: expected expression before ‘struct’ struct ClassName* c = ClassName_new(struct opaque_wrapper* instance);

这是我的 Wrapper.h 文件:

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

struct opaque_wrapper* make_instance(void);
void release_instance(struct opaque_wrapper*);

typedef struct ClassName ClassName;

ClassName* newClassName(struct opaque_wrapper*);

void ClassName_setValue(ClassName* v, double p_value);

void deleteClassName(ClassName* v);

#ifdef __cplusplus
}
#endif /* __cplusplus */

我只想拥有这个结构,所以我不必在我的 Wrapper.h 文件中实现 std::shared_ptr<Lib::Instance> p_Instance

我希望这能帮助我实施 ClassName_setValue(...);在我的 main() 中,在 c!

您的调用语法无效。我强烈建议您在继续学习之前完成 C 的介绍。

简而言之,您的调用混淆了声明和调用函数的语法(并且您发布的错误消息属于另一段代码,而不是您发布的代码!)。

要修复对 newClassName 的调用,您首先需要定义一个类型为 struct opaque_wrapper 的初始化 object,顺便说一下,它没有在您的任何地方声明header(您需要添加它的声明)。

假设你有一个 struct opaque_wrapper * 类型的初始化指针 pwrapper,你可以按如下方式调用函数:

ClassName *c = newClassName(pwrapper);

你的调用语法错误,应该是这样的:

opaque_wrapper* intance = make_instance();

ClassName* c = newClassName(intance);