Генерация кода для констант в структурах и массивах
Генератор кода не распознает постоянные поля структуры или элементы массива в следующих случаях:
Поля или элементы присвоены в построениях управления
В следующем коде генератор кода распознает, что поля s.a
и s.b
структуры являются константами.
Если какое-либо поле структуры присвоено в построении управления, генератор кода не распознает постоянные поля. Это ограничение также применяется к массивам с постоянными элементами. Рассмотрите следующий код:
Генератор кода не распознает, что s.a
и s.b
являются постоянными. Если калибровка переменной включена, y
обработан как массив переменного размера. Если калибровка переменной отключена, генератор кода сообщает об ошибке.
Константы присвоены элементам массива, использующим нескалярную индексацию
В следующем коде генератор кода распознает, что a(1)
является постоянным.
В следующем коде, потому что a(1)
присвоен, использовав нескалярную индексацию, генератор кода не распознает, что a(1)
является постоянным.
Функция возвращает структуру или массив, который имеет постоянные и непостоянные элементы
Для выходной структуры, которая имеет и постоянные и непостоянные поля, генератор кода не распознает постоянные поля. Это ограничение также применяется к массивам, которые имеют постоянные и непостоянные элементы. Рассмотрите следующий код:
Поскольку create_structure
возвращает структуру s
, который имеет одно постоянное поле и одно непостоянное поле, генератор кода не распознает, что s.a
является постоянным. Вызов coder.const
перестал работать, потому что s.a
не является постоянным.