【发布时间】:2021-05-13 03:19:34
【问题描述】:
我想自己访问结构成员,不希望其他人看到详细信息。 我的意思是 Java 中受保护的访问修饰符。
我有一个名为linkedlist.c 的文件,其结构如下:
struct listNode
{
int data;
struct listNode *next;
};
struct linkedlist
{
ListNode *head;
};
还有一个像这样的头文件linkedlist.h:
typedef struct listNode ListNode;
typedef struct linkedlist LinkedList;
但我无法在另一个名为 priority_queue.c 的文件中使用结构成员,因为结构定义仅在 .c 文件中。
如何实现这些我自己可以访问成员但其他程序员只能看到类型 LinkedList 和 ListNode 的结构?
【问题讨论】:
-
您需要两个标题。一是定义公共接口。另一个定义受保护的接口。第二个应该包括第一个以确保一致性。您的代码使用受保护的接口。其他人的代码都使用公共接口。
-
切换到 C++ 你将拥有这个(
struct中的private修饰符)。您可以同时保持面向过程的编程。 -
使用不透明结构:What is an opaque pointer in C?
标签: c struct linked-list access-modifiers