类关键字后的宏变量

时间:2010-06-30 03:34:59

标签: c++ macros

我在Ogre Framework中找到了这个

class _OgreSampleClassExport Sample_Character : public SdkSample {
...
...

并且它的定义如下

#define _OgreSampleClassExport

为什么我们想拥有这个宏变量?

2 个答案:

答案 0 :(得分:5)

据推测,可以通过修改(或有条件地定义)define来将特殊限定符(例如__declspec(dllexport))添加到此类中:

#define _OgreSampleClassExport __declspec(dllexport)

答案 1 :(得分:3)

允许未来的出口。 Ogre目前可能只是一个静态链接的库,但如果作者决定支持动态链接库(在某些平台上也称为共享库),他们将需要编写如下代码:

class
#ifdef EXPORTING
    __declspec(dllexport)
#else
    __declspec(dllimport)
#endif
Sample_Character [...]

......这只适用于MSVC。通常他们必须完成对Sample_Character和他们通过库提供的所有其他类的努力。使一个宏稍后定义更容易,因为他们只需要在一个地方执行此操作。