我使用Boost 1.46龜的lib 1.2.4和編譯器從Visual Studio Express的2013年我有下面的類嘲笑:爲什麼要在Boost Turtle中爲運算符float()使用MOCK_NON_CONST_METHOD_EXT?
struct IPredicate
{
virtual ~IPredicate() {}
virtual bool operator()(float value) = 0;
};
當我嘲笑運營商()與MOCK_NON_CONST_METHOD:
MOCK_BASE_CLASS(MockPredicate, IPredicate)
{
MOCK_NON_CONST_METHOD(operator(), 1, bool(float), id)
};
我有一堆編譯器錯誤,例如語法錯誤「操作符」等。但是,當我與MOCK_NON_CONST_METHOD_EXT嘲笑它:
MOCK_BASE_CLASS(MockPredicate, IPredicate)
{
MOCK_NON_CONST_METHOD_EXT(operator(), 1, bool(float), id)
};
一切正常和完美的作品!根據http://turtle.sourceforge.net/turtle/reference.html帶有EXT後綴的MOCKS適用於「不支持可變宏的編譯器」,但我使用的是支持(使用這些示例檢查它:http://msdn.microsoft.com/en-us/library/ms177415.aspx)。其餘的文件不太清楚這種情況。
有人能解釋我這裏的情況嗎?爲什麼當我不使用EXT後綴MOCK版本時出現錯誤?