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

 
Andrei01:
Из ссылки про язык си из википедии выше:

"Если в функцию передаётся переменная, то при вызове функции создаётся её копия (выделяется память и копируется значение). Если в функцию передаётся ссылка (а не указатель) на объект, то никакая копия не создаётся, и все операции, которые производит функция, будут операциями над самим объектом, а не с его копией. Для указания того, какой подход используется, говорят либо о том, что объект передаётся по значению, либо о том, что объект передаётся по ссылке."

Так о каком тогда перекрытии переменных идет речь в предупреждении при передаче по ссылке?

Во первых. Даже если переменная бы не создавалась (что, кстати при инлайнинге и происходит) какое отношение к этому имеют правила определённые для имён?

Во вторых. Переменная создаётся. Ссылочная. Фактически это адрес (указатель) внешней переменной, передаваемой по ссылке.

Перестаньте уже путать правила перекрытия определённые для имён (которые вам полностью предъявлены в справке) и правила манипуляций с нативным кодом, которые вас напрямую не касаются и оставлены на усмотрение разработчиков.

Предъявленные правила выполняются. Какие проблемы?

Так о каком тогда перекрытии переменных идет речь в предупреждении при передаче по ссылке?
Речь идёт о перекрытии имён. Так понятнее?
 
Andrei01:
Из ссылки про язык си из википедии выше:

"Если в функцию передаётся переменная, то при вызове функции создаётся её копия (выделяется память и копируется значение). Если в функцию передаётся ссылка (а не указатель) на объект, то никакая копия не создаётся, и все операции, которые производит функция, будут операциями над самим объектом, а не с его копией. Для указания того, какой подход используется, говорят либо о том, что объект передаётся по значению, либо о том, что объект передаётся по ссылке."

Так о каком тогда перекрытии переменных идет речь в предупреждении при передаче по ссылке?


никакая копия не создаётся. Поясните о чём идёт речь? Не сможете, ибо учитесь на двойки. Никакая копия объекта не создаётся. При этом обращение к этому объекту производится по имени переменной. Переменная называется num и является указателем на некий существующий объект, имя которого в данном контексте никого не волнует.

BTW Смею Вам напомнить, что в стандарте языка Си написано следующее: "все параметры передаются по значению". Это означает безусловное создание локальных копий.

Если вдруг Вам заявляют ( в Си или Си плюс плюс), что некий параметр передаётся по ссылке, то копия объекта-параметра конечно же не создаётся. Создаётся локальная копия указателя на этот самый объект. При этом указатель, как и любой параметр, именован. И локальные имена могут совпадать с глобальными.

А что Вы вдруг возбудились на предупреждение об именах?

В общем, идите читать книжки. Речь не идёт о перекрытии переменных. Речь идёт всего лишь об использовании имён переменных в разных скопах. Предупреждение "здесь могут быть мины" спасло много жизней

 
stringo:

Речь не идёт о перекрытии переменных.

Ну так каким боком тогда тут возникает предупреждение о перекрытии переменных?? "declaration of 'num' hides global declaration"

Уж ведь десятый раз спрашиваю и уже все согласны что декларации новой переменной 'num' нет и нет никакого перекрытия переменных (hides).

 
Andrei01:

Ну так каким боком тогда тут возникает предупреждение о перекрытии переменных?? "declaration of 'num' hides global declaration"

Уж ведь десятый раз спрашиваю и уже все согласны что декларации новой переменной 'num' нет и нет никакого перекрытия переменных (hides).


Этта. Где в этом сообщении идёт речь о переменной? Речь только о декларации 'num', которая перекрывает глобальную декларацию.

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

 
stringo:

Речь только о декларации 'num', которая перекрывает глобальную декларацию.

При передаче по ссылке нет никакой декларации 'num' и поэтому нет никакого перекрытия деклараций, как вы утверждаете. Никакой коллизии имен тут также нет так как вполне логично и законно что я захочу произвести какие-то операции именно над глобальной переменной 'num' внутри функции. Зачем же мне при этом нужно обязательно переименовывать переменную 'num' в другое имя и вводить путаницу если операция нужна только для глобальной 'num'?? Если же мне понадобится тоже самое сделать над другими глобальными переменными, то я просто подставлю другое имя при вызове функции так что спутать адекватному человеку тут ничего нельзя в принципе при всем желании.
 
Гусары, молчать.
 
:))
 
Добавили ли возможность тестирования мультивалютных советников, или единственным вариантом остается раздельное тестирование по каждой валютной паре для подбора оптимальных параметров?
 
ITeXPert:
или единственным вариантом остается раздельное тестирование по каждой валютной паре для подбора оптимальных параметров?

В то время, как космические корабли бороздят просторы Вселенной,

с точки зрения банальной эрудиции можно надеяться только на парадоксальные эмоции )

 

Когда редактируешь код, то очень мешают пробелы в конце строк кода. Приходятся каждый раз

Сделайте пожалуйста переход на последний символ кода, игнорируя пробелы в конце строки. Аналогично поведению перехода в начало строки, по клавише HOME.

Либо как вариант, удаление пробелов в конце строки при окончании редактирования кода.

Заявка № 955313.


Групповая загрузка котировок. Заявка № 907069. Не оставьте пожалуйста без внимания.

Вообще хотелось больше внимания к загрузке котировок. Например, штатная проверка на дыры и загрузка данных. А не скриптами.

Автоматическая полноценная синхронизация котировок по выбранным символам, а не при открытии графика.

Ведь котировки (архив котировок) это фундамент с которым работают программисты-трейдеры.


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