gpt4 book ai didi

c - 是否有任何解决方法可以在 C 中以某种方式使结构成员成为 'private'?

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

我正在用 C 开发一个简单的库,供我自己和一些 friend 个人使用。

我目前有一个 C 结构,其中一些成员应该以某种方式对应用程序的其余部分隐藏,因为它们仅在内部使用。意外修改其中一个成员可能会使库“变得疯狂”。

是否有任何“解决方法”来隐藏这些成员以使其无法访问?

最佳答案

通常的技术是这样的:

/* foo.h */
typedef struct Foo Foo;

Foo *foo_create(...);

void foo_bark(Foo* foo, double loudness);

/* foo.c */
struct Foo {
int private_var;
};

您可以通过在 header 中定义 Foo 并在 .c 文件中定义 FooPrivate 来部分隐藏数据成员:

struct FooPrivate {
Foo public_stuff;
int private_var;
}

但是你的实现必须在 Foo 和 FooPrivate 之间来回转换,我发现这是一个皇家 PITA,如果你以后改变主意并想要将某些东西设为私有(private),这将是一个维护负担。除非您想从代码中吸取每个最后的 CPU 周期,否则只需使用访问函数。

关于c - 是否有任何解决方法可以在 C 中以某种方式使结构成员成为 'private'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2522424/

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