我在c ++中遇到了一个代码,其中class被定义为:
class MACRO class_name
{
public :
private :
}
Run Code Online (Sandbox Code Playgroud)
如果您在 Windows 代码中看到它,这可能是一个宏,它确定您是否要导出或导入给定的类。
如果您正在处理 dll-s,这是很常见的。
所以,这个宏可能是这样的:
#ifdef PROJECTNAME_EXPORTS
#define MACROBEFORECLASSNAME __declspec(dllexport)
#else
#define MACROBEFORECLASSNAME __declspec(dllimport)
#endif
Run Code Online (Sandbox Code Playgroud)
如果编译 dll,则应定义 PROJECTNAME_EXPORTS 预处理器定义,以便编译器将导出给定的类。如果您编译一个仅使用给定 dll 的项目,则不会定义 ...EXPORTS,因此编译器将导入给定的类。