我下载OGRE3D源代码,并发现这种类的声明:
class _OgreExport TimeIndex
{ ...
我知道“TimeIndex”是类的名字,但什么是“_OgreExport”中间? CPP参考不包括这种类报关单。 这是什么?
我下载OGRE3D源代码,并发现这种类的声明:
class _OgreExport TimeIndex
{ ...
我知道“TimeIndex”是类的名字,但什么是“_OgreExport”中间? CPP参考不包括这种类报关单。 这是什么?
_OgreExport
是一个预处理指令,扩展为
__declspec(dllimport)
当该文件被包含在它的模块的外部或
__declspec(dllexport)
除此以外。 在Windows下,你必须指定你想要的类/方法导出/导入,使他们可以在二进制文件中使用。
从技术上讲,詹姆斯在评论中指出,宏的名称是非法的,因为它以下划线开头。 这些名称保留给实现。
看到从该代码OgrePlatform.h:138
# 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
我强烈建议你使用谷歌代码搜索 ,如果你有这种类型的其他问题。 刚进入,例如,_OgreExport,看看其他使用它或者它是如何定义的。
这是一个可扩展到像宏__declspec(dllexport)
,标志着类链接器导出。