我最近查看了一些代码,我偶然发现了这个问题:
class IDATA_EXPORT IData {
/* .... */
}
Run Code Online (Sandbox Code Playgroud)
哪里IDATA_EXPORT不超过:
#ifndef IDATA_EXPORT
#define IDATA_EXPORT
#endif
Run Code Online (Sandbox Code Playgroud)
什么是IDATA_EXPORT在这种情况下?(我的意思是,它的类型是int,char等......?)
Rot*_*tem 12
最有可能在某个时间点,或在某些条件下,它被定义为(例如,在MSVC下):
#define IDATA_EXPORT __declspec(dllexport)
Run Code Online (Sandbox Code Playgroud)
用于表示从库中公开导出的类.
使用宏,开发人员可以在导出类之间交替,而不是导出任何内容,而无需遍历每个单独的类.
这通常是宏模式的一部分,它在导入和导出类之间交替,这取决于代码是从库编译还是从依赖于库的程序编译.它看起来像是这样的:
#ifdef IS_LIBRARY // <--this would only be defined when compiling the library!
#define IDATA_EXPORT __declspec(dllexport)
#else
#define IDATA_EXPORT __declspec(dllimport)
#endif
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅MSDN上的dllexport,dllimport