c typedef(ed) 不透明指针

标签 c struct typedef opaque-pointers

我定义了一个不透明的结构和相关的 API,如下所示:

typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);

我无法在我的 c 文件中定义结构。给出重新定义错误。

typedef struct foo {
   int implementation;
}foo;

我可以在没有 typedef 的情况下在 c 文件中使用 foo,但我想要 typedef(即直接将其用作 foo*)。有办法吗?

最佳答案

您的 header 中已包含 typedef,因此请将其包含在内,并在实现中定义 struct foo,而不使用 typedef

foo.h:

typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);

foo.c:

#include <foo.h>

struct foo { int implementation; };
/* etc. */

关于c typedef(ed) 不透明指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48015590/

相关文章:

c - 使用 malloc 为堆分配内存

c - 基于ebp的寻址和esp寻址之间的区别

c - 在 C 中打印三角形

c - 在结构体中引用结构体

c - 在 C 中定义 typedef 的错误

c - 向列表添加 1 个字符时出现无限循环

python - 为什么struct中第一个打包的数据是little endian,而其余的都是big endian?

json - 解析 JSON 对象后打印选定字段时出错

c++ - C++ 中正确的 typedef 位置

c++ - 冲突类型交换void *和HINSTANCE