Области видимости
Программа на языке LC включает две области видимости переменных: глобальную и локальную.
Глобальные переменные
Глобальные переменные, это переменные, объявленные вне функций. Эти переменные располагаются компилятором во время компиляции в статической области памяти, и их значения сохраняются между вызовами функций. В отличие от C/C++, язык LC позволяет использовать глобальные переменные до их текстового объявления, поскольку поиск выполняется по всей глобальной области, независимо от позиции в коде.
Пример объявления глобальных переменных
//Объявление глобальных переменных
byte var1;
short var2;
void loop()
{
var1 = 1;
var2 = 2;
var3 = 3;
}
//Тут тоже можно объявлять глобальные переменные
int var3;
Локальные переменные
Локальные переменные объявляются внутри функций, и располагаются на стеке. Значения локальных переменных не сохраняются между вызовами функции. Как и в C/C++, использовать локальную переменную можно только после ее объявления.
Пример объявления локальных переменных
void loop()
{
int a; //Объявляем локальную переменную
a = 100; //Используем локальную переменную
//Объявляем и одновременно инициализируем
//локальную переменную
int b = 10;
}
Имена переменных
В пределах одной области видимости, не допускается объявление переменных с одинаковыми именами.
Пример правильного и ошибочного именования переменных
int a; // Объявление переменной `a` в глобальной области
int a; // !!! ОШИБКА !!!
void loop()
{
int a; // Объявляем переменную `a` в локальной области
int a; // !!! ОШИБКА !!!
}
Поиск переменной
При использовании переменной, компилятор выполняет поиск eё объявления по имени, начиная с текущей области видимости и далее вверх по иерархии вложенных областей (лексических областей). Будет использовано первое найденное объявление.