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

Possible Conflict between a macro and a method

我认为方法和 windows 宏之间可能存在冲突。 我正在使用 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 当我清楚地输入 GetMessage ?

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

您可能会在调用时的 .cpp 中发现 GetMessage 的宏是有效的。