宏和方法之间可能存在的冲突

Possible Conflict between a macro and a method

本文关键字:存在 冲突 方法 之间      更新时间:2023-10-16

我认为方法和窗口宏之间可能存在冲突。我正在使用cygwin gcc,这就是我的冲突的样子

File : MRepository.h
#pragma once
#ifdef  GetMessage
#undef  GetMessage
#endif  //GetMessage
class MRepository
{
public:
    std::wstring GetMessage(const std::wstring &key) const;
    ...
    ....
};
File : MRepository.cpp
bool MRepository::SomeMethod(boost::shared_ptr<foo> &nd)
{
        std::wstring type = this->GetMessage(L"SomeData"); //Error Here : Method not recognized
        ....
        ....        
    return available;
}

这是我从该方法中得到的错误

error: 'class MRepository' has no member named 'GetMessageA'|

请注意,我调用了GetMessage但它认为该方法被调用GetMessageA任何关于为什么编译器认为我在明确输入GetMessageAGetMessage引用的建议?

我发现的最佳解决方案是将您的方法重命名为与 Windows 宏不冲突的内容。

您可能会在调用点的.cpp中找到 GetMessage 的宏已生效。