我试图了解一个开源项目,在那里我遇到了以下类声明:
class STATE_API AttributeSubject : public AttributeGroup, public Subject
{
public:
AttributeSubject(const char *);
virtual ~AttributeSubject();
virtual void SelectAll() = 0;
virtual const std::string TypeName() const;
virtual void Notify();
virtual AttributeSubject *CreateCompatible(const std::string &) const;
virtual AttributeSubject *NewInstance(bool copy) const { return 0; };
virtual bool VarChangeRequiresReset(void) { return false; };
};
Run Code Online (Sandbox Code Playgroud)
在类名AttributeSubject之前STATE_API表示什么?它是某种宏吗?
它可能是__declspec(dllimport)或__declspec(dllexport)的typedef,并且在Windows平台上的DLL内部用于导出类.
尼尔是对的,这是一个宏观.
它通常看起来像这样:
#ifdef INDSIDE_DLL
#define STATE_API __declspec(dllexport)
#else
#define STATE_API __declsped(dllimport)
#endif
Run Code Online (Sandbox Code Playgroud)
您只在您的dll中定义INSIDE_DLL并导出使用STATE_API宏声明的所有类.