【发布时间】:2019-11-26 09:05:17
【问题描述】:
我有一个头文件list.h 和一个源文件list.c,它们定义了list.h 中的函数。 我这里有一个结构:
typedef struct ListNode{
struct ListNode* next;
struct ListNode* prev;
void *value;
}Node;
typedef struct List{
Node *first;
Node *last;
int count;
}List;
当编译器不接受同时使用 static 和 typedef 时,如何使它们仅对 list.h 中的函数可见?这些是我在 list.h 中声明的函数:
List *List_create();
void List_destroy(List *list);
void *List_remove(List *list,Node *node);
【问题讨论】:
-
您的意思是希望结构类型仅在
list.c中可见,还是要声明这些类型的静态变量? -
在声明变量时使用静态,而不是在
typedef中。 -
是的,我希望结构类型仅在 list.c 中可见。
-
我已经编辑过了,抱歉我没有检查就粘贴了我的代码。
-
@ThomasJager 我确实尝试过,但编译器会抛出错误“在静态之前预期的说明符限定符列表”。该站点中的某个人还提到您不能在结构中声明静态变量。