[問題] 自製DLL的struct問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
WinAPI
問題(Question):
目前在設計一套包含不同IO操作功能的API
所以除了MyDll.h, MyDll.cpp之外還有IO.cpp, IO.h, IO2.cpp, IO2.h...
有些資料我希望使用struct包裝之後在IO與MyDll中傳送
並且Call MyDll的人也可以直接使用這個struct
例如
在IO.h內定義一個struct如下
typedef struct _ReadData
{
char *A;
int B;
...
} READDATA;
在IO.cpp內使用這個struct毫無疑問是沒有問題的
在MyDll.cpp內有一個function如下
void funA(READDATA *ReadData)
{
...
}
MyDll.cpp內要使用的話因為有#include "IO.h"所以也沒有問題
但是在MyDll.h內該怎麼做才能讓呼叫這個dll的其他人可以使用READDATA這個struct呢?
我目前想到的方法是重新在MyDll.h內定義一個名字不一樣但是內容一樣的struct
例如
typedef struct _ReadData1
{
char *A;
int B;
...
} READDATA1;
雖然有達到我要的目的
不過總覺得應該會有更好的寫法
只是一直不知道該怎麼下手
查資料也不曉得該用什麼關鍵字查
所以上來請教各位有沒有其他的想法?
先在這邊謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 113.196.154.130
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1435141355.A.77C.html
→
06/24 19:22, , 1F
06/24 19:22, 1F
→
06/24 19:25, , 2F
06/24 19:25, 2F
→
06/24 19:27, , 3F
06/24 19:27, 3F
意思是說
把共用的struct放到另一個叫做A.h的header file裡面
然後加上#ifndef來避免重複include
最後讓MyDll.h跟IO.h都include A.h這樣嗎?
如果是的話
最後我要提供給使用者的除了MyDll.dll跟MyDll.h之外
還要提供這個A.h囉?
→
06/24 22:43, , 4F
06/24 22:43, 4F
→
06/24 22:46, , 5F
06/24 22:46, 5F
→
06/24 22:46, , 6F
06/24 22:46, 6F
我目前是比較傾向於維護一個就好
所以說我應該在IO.h跟MyDll.h裡面都這樣寫嗎?
#ifndef _XXXSTRUCT_
#define _XXXSTRUCT_
typedef struct _ReadData
{
char *A;
int B;
...
} READDATA;
#endif
不好意思對這個東西掌握度比較低
可能會問一些笨問題
還謝謝大家海涵
※ 編輯: petercoin (111.251.160.111), 06/24/2015 23:36:59
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章