程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 封裝-想請教下有關頭文件的問題

封裝-想請教下有關頭文件的問題

編輯:編程綜合問答
想請教下有關頭文件的問題

以下是頭文件的代碼,想問下用“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;

最佳回答:


typedef void SeqList; 給void起別名為 SeqList
typedef void SeqListNode;
這樣做是為了使用者方便閱讀,

SeqList* SeqList_Create(int capacity); //這樣一看返回值就知道是返回值是鏈表

void * SeqList_Create(int capacity); //如果這樣,使用者一看只知道是返回指針,不知道具體的,可讀性很差

所以才會給void起別名,封裝好的底層函數,提供給使用者使用,使用者會給容易懂

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved