如何从 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);
这个问题是指我之前的问题:
所以请先阅读那篇文章,以便您了解我现在所处的位置。
我想知道如何调用我的结构:
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);