我下载了Ogre3D源代码,并发现了这种类声明:
class _OgreExport TimeIndex
{ ...
我知道“TimeIndex”是类名,但中间的“_OgreExport”是什么? CPP参考不包括这种类声明表。这是什么?
答案 0 :(得分:4)
_OgreExport
是一个预处理器指令,可以扩展为
__declspec(dllimport)
当文件包含在其模块之外或
时__declspec(dllexport)
否则。在Windows下,您必须指定要导出/导入的类/方法,以便可以跨二进制文件使用它们。
从技术上讲,正如詹姆斯在评论中指出的那样,宏名称是非法的,因为它以下划线开头。这些名称保留用于实现。
答案 1 :(得分:3)
# if defined( OGRE_NONCLIENT_BUILD )
# define _OgreExport __declspec( dllexport )
# else
# if defined( __MINGW32__ )
# define _OgreExport
# else
# define _OgreExport __declspec( dllimport )
# endif
# endif
# define _OgrePrivate
# endif
如果您对此类型有其他疑问,我强烈建议您使用google code search。只需输入,例如_OgreExport,看看其他人如何使用它或如何定义它。
答案 2 :(得分:2)
这是一个扩展为类似__declspec(dllexport)
的宏,标记要由链接器导出的类。