要使结构的成员对外部“私有(private)”,我知道我可以做到这一点。
在.h文件中
typedef struct Obj Obj;
然后在 .c 文件中
struct Obj {
int a;
int b;
}
这将使 a
和 b
的存在不被知晓。但是 .c 文件中的所有“成员”函数现在都将与它们相关,并且可以在那时进行操作。
但我现在想知道的是,是否可以将结构的一部分设为“私有(private)”。假设我想将这些 a
和 b
变量保留为“私有(private)”,但随后我想要一些函数指针保持公开状态。这可能吗?
我知道,如果我尝试在 .h 文件的结构中声明这些,我会在结构上收到重复声明错误。
最佳答案
复制Python:对“私有(private)”成员使用荣誉系统。
在成员名称的开头放置一个 _
作为其他代码不应触及的危险信号。除非您的应用程序内部有安全边界(这并不常见),否则您实际上不需要真正的私有(private),您只需要团队成员同意的约定来假装他们是私有(private)的。
尽量不要通过强制 C 进入一个它并不真正适合的范式来增加复杂性。用于公共(public)/私有(private)接口(interface)的额外 header 和用于类管理的额外源文件将使您的开发工作变得更加复杂,从而违背了信息隐藏所追求的“更易于维护”的目标。
关于c - ANSI C 中的模拟类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317195/