是什么这样的C ++类的声明是什么意思?(What does this kind of C++ cl

2019-08-16 22:26发布

我下载OGRE3D源代码,并发现这种类的声明:

class _OgreExport TimeIndex
{ ...

我知道“TimeIndex”是类的名字,但什么是“_OgreExport”中间? CPP参考不包括这种类报关单。 这是什么?

Answer 1:

_OgreExport是一个预处理指令,扩展为

__declspec(dllimport)

当该文件被包含在它的模块的外部或

__declspec(dllexport)

除此以外。 在Windows下,你必须指定你想要的类/方法导出/导入,使他们可以在二进制文件中使用。

从技术上讲,詹姆斯在评论中指出,宏的名称是非法的,因为它以下划线开头。 这些名称保留给实现。



Answer 2:

看到从该代码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,看看其他使用它或者它是如何定义的。



Answer 3:

这是一个可扩展到像宏__declspec(dllexport) ,标志着类链接器导出。



文章来源: What does this kind of C++ class declaration mean?