1

我下载了 Ogre3D 源代码,发现了这种类声明:

class _OgreExport TimeIndex
{ ...

我知道“TimeIndex”是类名,但中间的“_OgreExport”是什么?CPP 参考不包括这种类声明表。这是什么?

4

3 回答 3

4

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

__declspec(dllimport)

当文件包含在其模块之外或

__declspec(dllexport)

除此以外。在 Windows 下,您必须指定要导出/导入的类/方法,以便它们可以跨二进制文件使用。

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

于 2013-02-12T08:52:21.983 回答
3

从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 并查看其他人如何使用它或如何定义它。

于 2013-02-12T08:54:11.033 回答
2

它是一个扩展为类似 的宏__declspec(dllexport),标记要由链接器导出的类。

于 2013-02-12T08:52:44.517 回答