gpt4 book ai didi

c - 在 C 中声明一个结构而不定义它

转载 作者:太空狗 更新时间:2023-10-29 16:10:59 27 4
gpt4 key购买 nike

我想在 C 中声明一个结构而不同时定义它(即分离接口(interface)和实现),以便其他人可以将其包含在他们的项目中并根据他们的需要定义它(它仅用作参数在我的代码中)。因此,我想知道这是否是:

A) 可能(也许只是使用宏)?

B) 被认为是良好做法(在我的特定情况下)?

B 在没有上下文的情况下很难回答(并且仍然是主观的)所以我只希望它针对 C 中任何常见的预先存在的模式进行检查以解决给定的上下文(如果有的话)。我有以下代码:

typedef struct {
bool logged_in;
} Foo;

我想这样(伪代码):

typedef struct Foo;

所以这个声明可以由将其包含在他们的项目中的人定义。在我的代码中,我只将它用作参数,而没有尝试访问它包含的属性,如下所示:

bool bar(Foo* foo) {
//...
}

谢谢。

最佳答案

像这样转发声明:

typedef struct Foo Foo;

然后用它的“全名”定义它:

struct Foo {

};

或者您可以直接转发声明“全名”:

struct Foo;

然后使用它:

bool bar(struct Foo *foo) {

}

关于c - 在 C 中声明一个结构而不定义它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com