我在c ++中遇到了一个代码,其中class被定义为:
class MACRO class_name
{
public :
private :
}
答案 0 :(得分:8)
在标准C ++ 11及更高版本中,class
和类名之间可能存在属性。也许(甚至更可能)宏可能会扩展为用于编译代码的特定编译器所支持的非标准属性语法。
答案 1 :(得分:4)
如果您在Windows代码中看到它,这可能是一个宏,它决定了您是要导出还是导入给定的类。
如果你正在处理dll-s,这很常见。
所以,这个宏可能是这样的:
#ifdef PROJECTNAME_EXPORTS
#define MACROBEFORECLASSNAME __declspec(dllexport)
#else
#define MACROBEFORECLASSNAME __declspec(dllimport)
#endif
如果编译dll,则应定义PROJECTNAME_EXPORTS预处理器定义,因此编译器将导出给定的类。 如果编译一个只使用给定dll的项目,则...... EXPORTS不会被定义,因此编译器将导入给定的类。