Константы точно не поддерживаются.
Похоже, что есть ограничение на размер памяти для локальных переменных.
Вид для печати
Константы точно не поддерживаются.
Похоже, что есть ограничение на размер памяти для локальных переменных.
Спасибо.
В справке есть следующий текст:
ПРИМЕЧАНИЕ
При записи выражений допустимо использовать переменные (локальные и глобальные) и константы.
что в этом случае подразумевается под глобальными переменными? VAR_GLOBAL как ключевое слово не распознается
Функция не имеет памяти, поэтому инициализированая переменная неким значением это и есть константа, если её не записывать
спасибо за ответ.
к сожалению, переменная даже если ее не записывать не превратиться в константу. Так как все равно будет размещена в стеке.
Глобальные константы в стек не помещаются (по крайней мере обычно не помещаются), соответственно их использование могло бы помочь обойти проблему с ограниченным размером стека.
Добрый день,
Приведенный ниже код почему то возвращает 0 или 1 в зависимости от значения inputVariable
Если убрать оба exit; то возвращает как ожидается - 55 всегда
Такое ощущение что exit; неправильно работает внутри case of
может кто сталкивался?
версия 1.23.301.0
Код:function function1: udint;
var_input
inputVariable : bool;
end_var
var
localVariable : udint := 0;
end_var
repeat
case bool_to_udint(inputVariable) of
0:
localVariable := 55;
exit;
1:
localVariable := 55;
exit;
end_case
until true
end_repeat
function1 := localVariable;
end_function
Я собственно про некорректность работы компилятора и пишу.
Если компилятор код скомпилировал, то он должен работать в соответствии с документацией. Если не может скомпилировать - должен выдать ошибку.
Здесь налицо непредсказуемое поведение которое кому-нибудь точно потратит много времени
Я понимаю что у нас тут не gcc и никто ничего не вылизывал годами. Нашел ошибку, поделился с сообществом и разработчиками.
Пример написан для демонстрации неправильной работы компилятора, чтобы не утруждать Вас чтением 200+ строк кода.
Про логичность я кажется ничего не спрашивал.
Так автомат внутри ST функции. В чем может быть проблема? (кроме полного отсутствия отладки)