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

 
Zhunko:

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

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

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

Ну так я именно это и разжевал ;)
 
keekkenen:
с точки зрения видимостей переменных компилятор мог бы вообще не ругаться..

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

Ни один программист в жизни не догадается с какой стороны юсер пойдёт программу разламывать.

 
artmedia70:

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

Там нет объявления новой переменной, а есть передача по ссылке. Так что видимость переменных тут не причем.
 
Zhunko:

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

Ага, и еще надо предупреждение выдать в редакторе чтобы на красный свет дорогу не переходили)) Если уже решили предупреждать об очевидном то надо уже весь возможный список огласить. ))
 
artmedia70:

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

Ни один программист в жизни не догадается с какой стороны юсер пойдёт программу разламывать.

У меня так получилось с нулевым магиком, который объявлен глобальныи и передаётся в функцию. Недолго думая, поменял в функции magic на Magic, и компиллятор удовлетворился. В другой функции нет ссылки на магик, и обошлось без предупреждения. А этим магиком я и не пользуюсь, так присутствует везде для полного комплекта.
 
Andrei01:
Там нет объявления новой переменной, а есть передача по ссылке. Так что видимость переменных тут не причем.

Там есть объявление. Вы объявляете переменную num, а потом говорите, что в неё будете передавать адрес глобальной переменной num. Уберите вообще переменную num из объявления функции и предупреждения не будет - в данной функции станет видна глобальная num. Правда это - плохой метод. Лучше в функции задайте другое имя.
 
Andrei01:
Ага, и еще надо предупреждение выдать в редакторе чтобы на красный свет дорогу не переходили)) Если уже решили предупреждать об очевидном то надо уже весь возможный список огласить. ))

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

Удалите и поглядите.