Re: [問題] 請問C介面跟實作分開的作法
剛好最近有碰到,
目前也還在學習中,
剛好有點小心得,
有錯誤還懇請版上的大師們指正,
謝謝!
提個關鍵字跟板友分享一下
『opaque pointer』
這跟C++的pimpl有87%像
以下code舉例於維基百科
//=========================================
/* obj.h */
struct obj;
/*
* The compiler considers struct obj an incomplete type.
* Incomplete types can be used in declarations.
*/
size_t obj_size(void);
void obj_setid(struct obj *, int);
int obj_getid(struct obj *);
//--------------------------------------------
//--------------------------------------------
//--------------------------------------------
/* obj.c */
#include "obj.h"
struct obj {
int id;
};
/*
* The caller will handle allocation.
* Provide the required information only
*/
size_t obj_size(void) {
return sizeof(struct obj);
}
void obj_setid(struct obj *o, int i) {
o->id = i;
}
int obj_getid(struct obj *o) {
return o->id;
}
//=========================================
基本上這種機制很像C#的interface
(get/set)
再加個new/delete函式
就是一個完整的Obj wapper了
--
我老婆-娜璉,不服出來灣阿
https://imgur.com/ET5Oddy
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.105.133.181
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1524992127.A.825.html
噓
04/29 19:46,
6年前
, 1F
04/29 19:46, 1F
推
05/03 06:58,
6年前
, 2F
05/03 06:58, 2F
→
05/04 08:22,
6年前
, 3F
05/04 08:22, 3F
→
05/04 08:22,
6年前
, 4F
05/04 08:22, 4F
→
05/04 08:28,
6年前
, 5F
05/04 08:28, 5F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
21
83
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章