не сюрприз.
дело в том что TRUE/FALSE сами определены как константы в #DEFINE
если Си программист xочет задать булевскую константу, он распечатает принтом ее значение Print (false," ",true);
и определит например так:
#define my_bool 1
Спасибо, что про C напомнили ;)
Итак, пишем:
#define ONLYONE 1
и на конструкцию:
if ( ONLYONE )
получаем ошибку компиляции:
'ONLYONE' - comparison expression expected
Так что то, что Вы предожили - это не совсем то, чего хотелось. Я понимаю, что можно написать:
if ( ONLYONE == 1 )но хочется читабильности от своих текстов.
если бы языком МТ был бы Бэйсик, то претензий за него не оберешься,
а так - это не глюк но особенности Си.
изначально - удобную позицию заняли MQ
если бы языком МТ был бы Бэйсик, то претензий за него не оберешься,
а так - это не глюк но особенности Си.
Какой, нафик, "Си"? Вы о чем? Если б он был роднёй Си, то у него были бы:
1) методы для запроса памяти и работы с ней;
2) структуры;
3) прекомпилятор понимал бы #ifdefine;
4) можно было б написать в коде: next_item = sourcearray[++index];
...
Где хотя бы это в MQL? Никакой он не родня Си!
Однако не полный Си - поскольку компилятор дает предупреждение если внутри if() нет логической хоть какой нибудь операции.
но работает правилоьно.
также вы обнаружили недостаток препроцессора - первые предопределняи не присваиваются последним.
int tr=1,fl=0; Print (True," ",False); if(tr)Print ("True"); if(!fl) Print("false"); if(!tr*fl)Print ("ariphmetic");
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Читаем в документации:
------------------------------------------
Идентификатор константы подчиняется тем же правилам, что и для имен переменных. Значение может быть любого типа
------------------------------------------
После этого пытаемся использовать в коде советника:
и получаем ошибку при компиляции:
'ONLYONE' - defined value expected