我有以下 MQL4/5 代码:
class MQL4 {
public:
static double Ask() {
MqlTick _tick;
SymbolInfoTick(_Symbol, _tick);
return _tick.ask;
// Overriding Ask variable to become a function call.
#define Ask MQL4::Ask()
}
};
void start() {
double ask = Ask; // line 14
};
但是,根据错误,它无法在 MQL4 或 MQL5 下编译:
> mql /s /mql5 Test.mqh
MQL4/MQL5 Compiler build 1162 (02 Jul 2015)
Test.mqh : information: Checking 'Test.mqh'
Test.mqh(14,16) : error 320: 'Ask' - too complex, simplify the macro
Test.mqh(14,16) : error 239: '::' - syntax error
Test.mqh(14,16) : error 239: '::' - syntax error
Test.mqh(14,16) : error 239: '::' - syntax error
Test.mqh(14,16) : error 239: '::' - syntax error
Test.mqh(14,16) : error 239: '::' - syntax error
Test.mqh(14,16) : error 239: '::' - syntax error
Test.mqh(14,16) : error 239: '::' - syntax error
Test.mqh(14,16) : error 149: unexpected token
Test.mqh(14,16) : error 149: ')' - unexpected token
Test.mqh(14,16) : error 157: 'MQL4' - expression expected
Test.mqh(14,10) : warning 31: variable 'ask' not used
: information: Result 11 error(s), 1 warning(s)
与最新的 1498 版本相同的错误。
基本上它是说Ask
宏太复杂宏。虽然当我将Ask()
方法重命名为GetAsk()
并更新宏定义时它工作正常,
但是
我想了解
是否有任何其他解决方案而不必重命名它。
是否有任何语法可以定义可以理解以下宏的宏替换:
#define Ask MQL4::Ask()
无需重命名它,同时仍将其保留在静态类方法中?