MetaTrader 4 Client Terminal build 604 - страница 29

 
Zhunko:
Классы. Пространства имён, на крайний случай.

Внутри классов тоже есть внешние переменные относительно внутренних.
 
виноват то запуск на оффлайн графике был случайно.
 

вот такая проблемка - запускаю эксперта на визуале,

нажимаю на кнопку открыть сделку - панель стоит на оффлайн графике - нажимаю кнопку - открывается на счете :-)

 
Andrei01:
Внутри классов тоже есть внешние переменные относительно внутренних.

Но они неглобальные.

Сейчас в С++ проверил. Ошибок и предупреждений на уровне 4 нет.

Значит так было проще сделать в компиляторе MQL4, чем усложнять. Когда происходила инициализация в теле функции, ещё можно было понять, но при отсутствии инициализации. Не понятно...

У меня ниразу не было такой проблемы в MQL.

 
Vladon:


у емня норм ванклик пашет, свой собственный. а ВЫ не про это?

Да рынок стопориться когда ордер пытается открыться - согласен.


свой собственный оно понятно, что работает
 

фокус покус:

слева - моя папка с терминала

справа - сохраняю эксперта в этой папке

Фокус: в папке эксперта нет, а компилятор его видит как уже есть он.

 
Zhunko:

Но они неглобальные.

Сейчас в С++ проверил. Ошибок и предупреждений на уровне 4 нет.

Значит так было проще сделать в компиляторе MQL4, чем усложнять. Когда происходила инициализация в теле функции, ещё можно было понять, но при отсутствии инициализации. Не понятно...

У меня ниразу не было такой проблемы в MQL.

Эти предупреждения никакой информации не несут а просто мешаются... Непонятно для чего они нужны...
 
Andrei01:
Какой тут конфликт? Редактор ругается на декларацию новой переменной хотя этого тут нет и в помине.

Компилятор не ругается ни о чём. Он вас предупреждает. А предупреждает он вот о чём:

Так как у вас есть глобальная переменная с именем num, то она должна быть видна во всех функциях программы. В одной из функций программы вы объявляете переменную с таким же именем num. Так как видимость этой переменной ограничено пределами функции, в которой она объявлена, то компилятор вас предупреждает, что в данной функции от вас будет скрыто значение глобальной переменной num - так как в этой функции есть такая же переменная и будет использоваться значение именно этой локальной переменной.

А ведь компилятор не знает значение какой именно переменной вы желаете использовать в этой функции - глобальной, или той, что объявлена локально. Посему он вас предупреждает - значение глобальной переменной внутри этой функции для вас скрыто, а доступно значение локальной переменной. Вам решать правильно вы используете эту переменную, или нет. Но компилятор видит вероятный конфликт и сообщает об этом.

Всё верно он делает.

 
artmedia70:

Компилятор не ругается ни о чём. Он вас предупреждает. А предупреждает он вот о чём:

Так как у вас есть глобальная переменная с именем num, то она должна быть видна во всех функциях программы. В одной из функций программы вы объявляете переменную с таким же именем num. Так как видимость этой переменной ограничено пределами функции, в которой она объявлена, то компилятор вас предупреждает, что в данной функции от вас будет скрыто значение глобальной переменной num - так как в этой функции есть такая же переменная и будет использоваться значение именно этой локальной переменной.

А ведь компилятор не знает значение какой именно переменной вы желаете использовать в этой функции - глобальной, или той, что объявлена локально. Посему он вас предупреждает - значение глобальной переменной внутри этой функции для вас скрыто, а доступно значение локальной переменной. Вам решать правильно вы используете эту переменную, или нет. Но компилятор видит вероятный конфликт и сообщает об этом.

Всё верно он делает.

До меня дошло, а чём Андрей говорит.

В С++ это правило. Предупреждений никаких нет. Типа, это и так все знают.

В MQL4 сделали такое предупреждение на всякий случай. Сервис такой. Андрею он не нравится :-)

 
с точки зрения видимостей переменных компилятор мог бы вообще не ругаться..