zou_zhen 2015-04-26 14:59 采纳率: 78.9%
浏览 2064
已采纳

想请教下有关头文件的问题

以下是头文件的代码,想问下用“typedef void SeqList”这样写是啥意思呢?把“SeqLis”重命名为空类型?网上看了下是说什么封装,就是在 .c 文件下不能随意给SeqList定义的结构体里面 的对象进行赋值。求大神赐教!

 #ifndef _SEQLIST_H_
#define _SEQLIST_H_

typedef void SeqList;
typedef void SeqListNode;

SeqList* SeqList_Create(int capacity);

void SeqList_Destroy(SeqList* list);

void SeqList_Clear(SeqList* list);

int SeqList_Length(SeqList* list);

int SeqList_Capacity(SeqList* list);

int SeqList_Insert(SeqList* list, SeqListNode* node, int pos);

SeqListNode* SeqList_Get(SeqList* list, int pos);

SeqListNode* SeqList_Delete(SeqList* list, int pos);

#endif

以下是.c文件的一部分代码。如果加上一句list ->length=0,程序则会报错,报错原因就是说在头文件里面用void对SeqListNode进行了封装。这是什么意思呢?

int main(int argc, char *argv[]) 
{
    SeqList* list = SeqList_Create(5);

    int i = 0;
    int j = 1;
    int k = 2;
    int x = 3;
    int y = 4;
    int z = 5;
    int index = 0;
  • 写回答

4条回答 默认 最新

  • 海森堡_lichangan 2015-04-27 13:44
    关注

    typedef void SeqList; 给void起别名为 SeqList
    typedef void SeqListNode;
    这样做是为了使用者方便阅读,

    SeqList* SeqList_Create(int capacity); //这样一看返回值就知道是返回值是链表

    void * SeqList_Create(int capacity); //如果这样,使用者一看只知道是返回指针,不知道具体的,可读性很差

    所以才会给void起别名,封装好的底层函数,提供给使用者使用,使用者会给容易懂

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器