Новая версия платформы MetaTrader 5 build 5830: общие улучшения - страница 16

 
Stanislav Korotky #:
Патаму чта _AppliedTo имеет смысл только при краткой форме OnCalculate.
До? Т.е. если полная форма OnCalculate и indicator_applied_price > 0 _AppliedTo должен возвращать шта?
 
b5836, компилятор не ругается на #undef несуществующего макроса. Это ошибка?
#undef MACROS

void OnStart() {}
 
fxsaber #:
b5836, компилятор не ругается на #undef несуществующего макроса. Это ошибка?

Нет. Это не ошибка.

Так вы явно указываете, что данный макрос не определён

 
Slava #:

Нет. Это не ошибка.

Так вы явно указываете, что данный макрос не определён

Но он же и не был определён.
 
Sergey Gridnev #:
Но он же и не был определён.

Это указание не на то, что с ранее определённого макроса снимается определение, а на то, что макрос с таким именем не определён. 

 
Artyom Trishkin #:

Это указание не на то, что с ранее определённого макроса снимается определение, а на то, что макрос с таким именем не определён. 

Как раз таки снимается определение с ранее определённого макроса.
 
Sergey Gridnev #:
Как раз таки снимается определение с ранее определённого макроса.
Макрос на этот момент может быть как определен, так и не определен. А такая директива указывает, что макрос точно не должен быть определен. Когда в проекте много mqh-файлов, которые могут взаимозаменяться, это полезно. Как страховка.
 
Ihor Herasko #:
Макрос на этот момент может быть как определен, так и не определен. А такая директива указывает, что макрос точно не должен быть определен. Когда в проекте много mqh-файлов, которые могут взаимозаменяться, это полезно. Как страховка.

Честно говоря, не вижу никакой полезности.

Я всё время явно проверял наличие отменяемого макроса:

#ifdef MACROS
   #undef  MACROS
#endif

Такая конструкция позволяет не отменить случайно не тот макрос.
 
Ihor Herasko #:
Макрос на этот момент может быть как определен, так и не определен. А такая директива указывает, что макрос точно не должен быть определен. Когда в проекте много mqh-файлов, которые могут взаимозаменяться, это полезно. Как страховка.

Честно говоря, не вижу никакой полезности.

Я всё время явно проверял наличие отменяемого макроса:

#ifdef MACROS
   #undef  MACROS
#endif

Такая конструкция позволяет не отменить случайно не тот макрос.

Дополню.
Вообще, это очень странно выглядит - отмена того, чего нет. Это как освободить память, которую не выделял. Как вызвать деструктор объекта, который не создавался.
 
Sergey Gridnev #:

Честно говоря, не вижу никакой полезности.

Я всё время явно проверял наличие отменяемого макроса:

#ifdef MACROS
   #undef  MACROS
#endif

Такая конструкция позволяет не отменить случайно не тот макрос.

Если вы не хотите видеть сообщение "macro XXX redefinition" , то ваша проверка не катит

Пример:

#define TEST_SIZE 10
...
...
#undef TEST_SIZE
#define TEST_SIZE 20

Неизвестно где был определён макрос TEST_SIZE и был ли он определён, но я хочу выставить новое его значение