[问题] 自制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