c typedef(ed) 不透明指针
我已经定义了一个不透明的结构和相关的 API,如下所示:
typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);
我无法在我的 c 文件中定义该结构。给出重新定义错误。
typedef struct foo {
int implementation;
}foo;
我可以在没有 typedef 的 c 文件中使用 foo,但我想要 typedef (即直接将其用作 foo*)。有办法吗?
I've defined an opaque structure and related APIs like this:
typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);
I am not able to define the structure in my c file. Gives redefinition error.
typedef struct foo {
int implementation;
}foo;
I am able to use foo in c file without typedef but I want the typedef (i.e. use it directly as foo*). Is there a way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的标头中已包含
typedef
,因此请将其包含在内,并在不带typedef
的实现中定义struct foo
。foo.h
:foo.c
:You already have the
typedef
in your header, so include that and definestruct foo
in the implementation without thetypedef
.foo.h
:foo.c
: