Константы точно не поддерживаются.
Похоже, что есть ограничение на размер памяти для локальных переменных.
Константы точно не поддерживаются.
Похоже, что есть ограничение на размер памяти для локальных переменных.
Последний раз редактировалось EFrol; 09.09.2022 в 18:20.
Спасибо.
В справке есть следующий текст:
ПРИМЕЧАНИЕ
При записи выражений допустимо использовать переменные (локальные и глобальные) и константы.
что в этом случае подразумевается под глобальными переменными? VAR_GLOBAL как ключевое слово не распознается
Функция не имеет памяти, поэтому инициализированая переменная неким значением это и есть константа, если её не записывать
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
спасибо за ответ.
к сожалению, переменная даже если ее не записывать не превратиться в константу. Так как все равно будет размещена в стеке.
Глобальные константы в стек не помещаются (по крайней мере обычно не помещаются), соответственно их использование могло бы помочь обойти проблему с ограниченным размером стека.
Добрый день,
Приведенный ниже код почему то возвращает 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+ строк кода.
Про логичность я кажется ничего не спрашивал.
Менеджер по продукту | Owen Logic
email: soft@owen.ru
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Так автомат внутри ST функции. В чем может быть проблема? (кроме полного отсутствия отладки)