declaration of 'SL' hides global variable

 

У меня есть давняя проблема, до которой так и не дошли руки.

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

Есть ли решение?

 

Префиксы. Например:

  • глобальные переменные gValue
  • члены класса/структуры cValue
  • параметры функции/метода mValue
  • параметры макроса dValue
  • локальные переменные value

А если уже наг...окодили ранее, а рефакторить лень, то через макросы выкручиваться:

#define value libValue
#include "someLib.mqh"
#undef value
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Vladimir Simakov:

Префиксы. Например:

  • глобальные переменные gValue
  • члены класса/структуры cValue
  • параметры функции/метода mValue
  • параметры макроса dValue
  • локальные переменные value

В своём-то коде нет проблем с разнесением имён. Префиксы... да.

Vladimir Simakov:

А если уже наг...окодили ранее, а рефакторить лень, то через макросы выкручиваться:

Вот за эту идею спасибо. Сразу полегчало. Как-то в голову не пришло.

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