这种C++类声明意味着什么

What does this kind of C++ class declaration mean?

本文关键字:意味着 什么 声明 C++ 这种      更新时间:2023-10-16

我下载了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)的宏,标记要由链接器导出的类。