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

 

Ошибка при выполнении:

#define MACRO1
#define MACRO2
#define MACRO(X)    MACRO3(X)
#define MACRO3(X)   #X
void OnStart()
{
    Print(MACRO(MACRO1)==MACRO(MACRO2));
}

Результат: false

Ожидалось: true

 
A100 #:

Ошибка при выполнении:

Результат: false

Не увидел ошибки. Пустые макросы, как значения, - сами имена, видимо.

Особенности языка mql5, тонкости и приёмы работы - Спасибо за наводку.
Особенности языка mql5, тонкости и приёмы работы - Спасибо за наводку.
  • 2023.11.01
  • www.mql5.com
с указателем ситуация отлично решается Любителям быстрых алгоритмов. Более продвинутые программисты решат эту задачу через структуру. Но существует третье решение, которое более производительней предыдущего решения в несколько раз Главная сложность в этом алгоритме - это расчет времени начала месяца Пожалуйста
 
fxsaber #:

Не увидел ошибки. Пустые макросы, как значения, - сами имена, видимо.

Самый простой способ доказать эту ошибку (помимо того, что в С++ результат: true) - объединить доказательство с еще одной ошибкой:

Допустим Вы правы - тогда в следующем примере - StringLen("MACRO1") должно быть равно StringLen("MACRO2")

#define MACRO1 \
//---
#define MACRO2
#define MACRO(X)    MACRO3(X)
#define MACRO3(X)   #X
void OnStart()
{
    Print(StringLen(MACRO(MACRO1))
        ==StringLen(MACRO(MACRO2)));
}

и результат должен был бы быть: true

А он - false (!)

 
A100 #:

Допустим Вы правы - тогда в следующем примере - StringLen("MACRO1") должно быть равно StringLen("MACRO2")

Я пас.
 
fxsaber #:
Я пас.

Тогда на завтра отложим, а то тут еще обнаружились сопутствующие ошибки

 

Ошибка при выполнении:

namespace A {
template<typename T>
class B { public: B() {Print(1);} };
}
namespace A {
template<typename T>
class B { public: B() {Print(2);} };
}
void OnStart()
{
    A::B<int> a;
}

Сомнительный результат: 1

А почему не 2 ?

 
Извиняюсь за встревание... вопрос - как мт5 дружит с касперским? Не глючит терминал? Спасибо.
 
MaximoV #:
Извиняюсь за встревание... вопрос - как мт5 дружит с касперским? Не глючит терминал? Спасибо.
Если у Вас Win10 или Win11, то использование сторонних антивирусов - это вредная привычка. 
Предустановленная Windows Security вполне нормально справляется с защитой. Если нет доверия, то иногда можете сканировать систему бесплатными сканерами, хоть от того же Касперского и убедиться, что Windows Security ничего не пропускает.
 

Как в коде определить, что отключена оптимизация компилятора?


Советник выводит стат. данные скорости тяжелых расчетов. Иногда вижу, что они идут медленно. Не сразу соображаю, что EX5 без включенной оптимизации. Хотелось бы иметь возможность принтовать этот флаг компилятора, как это делается с _RELEASE и __CPU_ARCHITECTURE__.


ЗЫ Сам написал.

Calculate Time (2024.02.27 00:00:00 - 2024.03.05 17:23:48, 122017 ticks) = 21 ms. (5810333 ticks/sec) X64 Regular Release, Optimization compiler = true
Calculate Time (2024.02.27 00:00:00 - 2024.03.05 17:24:26, 122043 ticks) = 46 ms. (2653108 ticks/sec) X64 Regular Release, Optimization compiler = false
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2024.02.18
  • Artyom Trishkin
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5 , примеры решения тех, или иных задач...
 
Nikolai Semko #:
Если у Вас Win10 или Win11, то использование сторонних антивирусов - это вредная привычка. 
Предустановленная Windows Security вполне нормально справляется с защитой. Если нет доверия, то иногда можете сканировать систему бесплатными сканерами, хоть от того же Касперского и убедиться, что Windows Security ничего не пропускает.

Вот у меня Win10 LTSC, которая обновляется крайне редко большими пакетами. Соответственно и вирусные базы долго остаются устаревшими, поэтому имхо риск отказа от стороннего антивируса в данном случае велик.
Или вирусные базы Windows Security обновляются независимо от системы и чаще?

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