[問題] 自製DLL的struct問題

作者: petercoin (彼得幣)   2015-06-24 18:22:33
開發平台(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;
雖然有達到我要的目的
不過總覺得應該會有更好的寫法
只是一直不知道該怎麼下手
查資料也不曉得該用什麼關鍵字查
所以上來請教各位有沒有其他的想法?
先在這邊謝謝各位
作者: Feis (永遠睡不著 @@)   2015-06-24 19:22:00
基本原則,會共用的獨立出來,加 include guard然後想清楚之間相依性決定誰要 include 誰或者將 A.h 內容放到兩個 .h 裡面, 一樣加上 guard
作者: firose (guest也是也是也是也是也)   2015-06-24 22:46:00
用戶跟你的 dll 引用的結構定義版本當然要相同,否則當不同步的時候會出問題。而只維護一個版本,比較不會出問題。

Links booklink

Contact Us: admin [ a t ] ucptt.com