Ошибки, баги, вопросы - страница 3373

 
Alexey Viktorov #:

Используйте 

и будет вам счастье.

у меня он чета не работает, или я туплю

double b = MathMod(0.71,5); 

равно 0,71


давняя ерунда

https://www.mql5.com/ru/forum/122022


да и там процент хотят получить, а не разделить?

Ошибка функции MathMod
Ошибка функции MathMod
  • 2009.11.19
  • www.mql5.com
Функция MathMod(value1,value2) почему-то возвращает некорректные значения при value2
 
Aleksey Vyazmikin #:
Валидация советника в маркете идёт со вчерашнего дня - как отменить?

Уже сутки идёт. И хорошо, если это очередь, а если оптимизация в облаке... я тогда разоряю MQ! 

 
Alexey Viktorov #:

Используйте 

и будет вам счастье.

Я нашёл решение - но исправить то это надо, поэтому и написал

 
Ошибка при компиляции:
#define MACRO \ //комментарий
А раньше (пока не обновился) нормально все было
 
A100 #:
Ошибка при компиляции: А раньше (пока не обновился) нормально все было

История вопроса.

 

Вижу, что Вы справедливо заметили:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 3800: ордера Book or Cancel, помощь AI при написании кода и расширенная поддержка ONNX

fxsaber, 2023.08.09 11:59

При этом текущая строка является частью директивы только до обратного слеша. Все, что правее этого слеша, не имеет к формированию директивы отношение.
По крайней мере пробел\комментарий после обратного слеша не должен быть ошибкой: никому не мешает, ни на что не влияет
#define MACRO1 \ //комментарий  //нормально
111
#define MACRO2 \ /**/           //нормально
222
#define MACRO3 \333             //ошибка, лишние символы после обратного слеша
333
#define MACRO4 \/*
                  */444         //ошибка, лишние символы после обратного слеша
444
#define MACRO5 \ /*
                  */            //нормально
555
Однострочный комментарий так уж точно к путанице не приводит 
 

Важная деталь: перенос через обратный слеш \ изначально (в C++) был задуман именно как слитный\неразрывный\без пробела перенос, потому что перенос с пробелом можно и через многострочный комментарий сделать:

                                                          //Ожидаемый результат: 
#define MACRO1 unsigned/*    //(1)//перенос через пробел  //unsigned int
*/int
#define MACRO2 unsigned\     //(2)//неразрывный перенос   //unsignedint
int

То, что сам неразрывный перенос (2) в MQL с ошибкой работает ранее уже обсуждалось, но выяснилось, что перенос через многострочный комментарий (1) вообще не работает:

#define MACRO1 unsigned/*
*/int 

Ошибка: 'int' - unexpected end of program

 
template <typename T, int Upd_ = CovarianceUpdate>
class Weighted : public Base
{

protected:

   typedef Weighted<T,  Upd_>     MyT_; 

   struct  upd_imp<T,  MyT_>; 

};

Доброго времени. Разбираю некий код на С++
И столкнулся с недопониманием.
Подскажите по шаблонной парадигме ООП С++.

MyT_ что это будет?
Созданный объект класса, или пользовательский тип класса ?
Просто не пойму, нафига создавать новый тип класса, если класс и так является типом.

Или это реально тавтология кодера? )) 

 
Roman #:

MyT_ что это будет?

В данном случае:

typedef Weighted<T,  Upd_>     MyT_;

сводится к

#define MyT_    Weighted<T,  Upd_>

Соответственно вопрос: а зачем здесь typedef ? сводится к вопросу: а зачем здесь #define ?

Причина обращения: