类定义中的宏

Macro in class definition

本文关键字:定义      更新时间:2023-10-16

>class是使用宏定义的。不确定宏观DEBUG_API在这里的意义是什么。 [我明白 #define 习惯了打开或关闭某些特定的代码集。但是下面的代码我无法掌握。任何解释将不胜感激

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

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

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

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