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