类定义中的宏

时间:2016-05-27 16:03:09

标签: c++

类是使用Macro定义的。不知道MACRO DEBUG_API在这里有什么意义。 [我理解#define习惯了 打开或关闭一些特定的代码。]但是在代码下面我无法理解。任何解释将不胜感激

#define DEBUG_API

class DEBUG_API Cdebug
{
     public:
     /*
        constructor, methods here.
     */
};

1 个答案:

答案 0 :(得分:3)

定义此宏时,您可以选择将应用于该类的attributes。这些可以是标准或编译器特定的属性。

您的特定示例很可能是MSVC下DLL头的常用模式的实例。根据编译时开关,DEBUG_API将设置为:

  • __declspec(dllexport),它将使MSVC生成一个包含类'thunk的.lib文件;将库编译为DLL时使用;
  • __declspec(dllimport),它将使MSVC链接到上面生成的thunk;在与DLL链接时使用;
  • 什么都不会改变班级的行为。这用于静态链接库。