Переменные ProveVue
Язык Vue поддерживает большинство традиционных типов данных C, то есть тех, которые распознаются спецификацией C-89. Кроме того, Vue включает в себя некоторые расширения, которые облегчают запись мощных программ динамической трассировки.
Vue поддерживает переменные трех различных областей действия:
- Переменные, которые локальны только для одного блока действия
- Переменные с глобальной областью действия
- Переменные с областью действия, локальной для нити
Кроме того, Vue имеет доступ к переменным со внешней областью действия, таким как глобальные переменные в ядре или пользовательские данные в тестируемом приложении.
В общем случае, переменные должны быть объявлены перед их первым использованием в сценарии, хотя Vue также поддерживает очень ограниченную форму неявного распознавания типа. Операторы объявления переменных внутри блока действия должны находиться перед любыми исполняемыми операторами. Они не могут находиться внутри вложенных блоков, например, внутри оператора if. В некоторых случаях можно объявить переменные вне всех блоков действия, но тогда все объявления должны находиться перед первым блоком действия.
Классы переменных
Vue поддерживает несколько классов переменных с различными правилами их области действия, способа их инициализации, возможности их обновления и способа определения их типов. Как и в языке C, все операторы объявления для переменной должны предшествовать их первому использованию в сценарии.
Vue предоставляет специальные спецификаторы типа, которые добавляются к оператору объявления для индикации классов объявляемых переменных. Например, ключевое слово __global - это спецификатор класса, который можно включить в оператор объявления, чтобы указать, что объявляемые переменные принадлежат классу "global".
В следующем примере foo и bar объявлены как переменные глобального класса:
__global int foo, bar;
Vue также поддерживает неявное распознавание типа переменной на основании ее первого использования в сценарии. В этом случае не существует оператора объявления, но класс переменной по-прежнему может быть предоставлен прямым добавлением спецификатора класса к переменной в ее первой текстовой ссылке в сценарии:
global:count = 5; /* Первая ссылка на переменную count в сценарии */
В предыдущем примере ключевое слово global: является спецификатором, который указывает, что переменная count - это переменная глобального класса. Этой переменной будет также неявно присвоен тип int, потому что первая ссылка на нее является выражением присваивания, правая сторона которого - это целая константа.