已经是宏的类名

时间:2018-01-25 20:53:41

标签: c++ class macros

我有以下代码:

class MessageBox
{
    public:
        MessageBox();
};

但问题是MessageBox在我的案例中是一个特定于操作系统的宏,它会导致问题。
我尝试#define MyMacro MessageBox,然后#undef MessageBox并重新定义它稍后,但只能在标题内部工作,因此当我尝试在源文件中创建类型为MessageBox的对象时,它不起作用。

2 个答案:

答案 0 :(得分:0)

如果您的班级名称与您实际无法更改的宏匹配,则您必须更改班级名称。

答案 1 :(得分:0)

一种可能的解决方案是创建一个标题,该标题将由项目的其余标题或源代码添加,而不是系统标题,并创建一个瘦的包装函数:

#include <system_header.h>

inline void myMessageBox( ... )
{
    MessageBox( ... );
}

#undef MessageBox

很难说如何在没有该宏的更多细节的情况下传递参数。