【问题标题】:c typedef(ed) opaque pointerc typedef(ed) 不透明指针
【发布时间】:2011-07-15 00:43:59
【问题描述】:

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

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

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

typedef struct foo {
   int implementation;
}foo;

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

【问题讨论】:

    标签: c struct typedef opaque-pointers


    【解决方案1】:

    您的标头中已经包含typedef,因此请在没有typedef 的实现中包含它并定义struct foo

    foo.h:

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

    foo.c:

    #include <foo.h>
    
    struct foo { int implementation; };
    /* etc. */
    

    【讨论】:

    • 是的。我可以在 c 文件中使用它,而无需再次对其进行类型定义。傻我问这样的问题。谢谢你让我意识到这一点。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多