在c ++中关键字'class'和类名之间可以有任何关系吗?

Arp*_*wal 4 c++ class

我在c ++中遇到了一个代码,其中class被定义为:

class MACRO class_name
{
     public :

     private :

}
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 8

在标准C++ 11及更高版本中,class类名和类名之间可以有属性.也许(甚至更可能)宏可能扩展到用于编译代码的特定编译器所支持的非标准属性语法.


Mel*_*kon 5

如果您在 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,因此编译器将导入给定的类。