Да не. Я ж не в укор.
Меня как раз по тому предложению и напрягло то, что макрос в общем случае НЕ ФУНКЦИЯ, а, как минимум, ПРОЦЕДУРА (а ещё точнее - объект, имеющий "собственное состояние"). А анализ схемы ведётся как для функции. Поэтому устранить неоднозначность поведения с обратными связями "вокруг макроса", пытаясь учитывать обратные связи внутри него ("прозрачность" без развёртывания), как минимум, очень сложно, как максимум невозможно.
Ну да ладно....
А вот можно ли как-то проработать вопрос с тем, чтобы редактирование макроса не требовало его перевставки в основную схему?
Просто, решение с перевставкой противоречит принципу структурированности программ.
Ну, т.е., если есть программа, использующая компоненты, то редактирование компонента не должно требовать его переопределения в программе.
Иначе получается ерунда.
Пишешь программу, используя десяток экземпляров одного компонента, и при небольшом изменении самого компонента - заново перерисовывать всю программу?
Не логично и не удобно. Даже если количество входов/выходов изменится - это не повод для требования перевставки.
Вы не правы. Изменив количество входов Вы меняете сигнатуру функции. Здесь должны быть вмешательство со стороны пользователя. А если Вы меняете только тело функции, то переустановка макроса на схеме и не требуется. Единственно, есть баг, к сожалению существующий уже на протяжении не одного релиза, если редактируете макрос со вложенностью более 1, то в том макросе, где используется редактирующийся макрос обновление сразу не наступит. Нужно будет заново переоткрыть макрос. Об этом я знаю, и надеюсь будет время в ближайшие сроки исправить.
Конечно, можно сделать то, что Вы хотите, но это уже будет в качестве дополнительного функционала.
Последний раз редактировалось wal79; 28.08.2017 в 09:31.
программер
Не обязательно. В ОЛ неиспользуемые входы инициализируются 0. Ошибки не будет, если новый вход будет никуда не подключен.
Если входов уменьшится, то просто связь к удалённому входу "повиснет в воздухе". Т.е., просто удалится.
Т.е., на языке .net все макросы имеют на входах значения "по умолчанию". Добавляется входная переменная, инициализированная по умолчанию 0 - и никаких ошибок, и от пользователя ничего не требуется.
Перерисовать в схему новый фб вместо старого - тоже никаких проблем быть не должно.
Ну так мне кажется. Хотя, Вам "изнутри" виднее, конечно.
Вообще по общепринятой терминологии, макрос - это идентификатор, который транслируется в некий неизменный участок кода.
Сколько раз его транслятор встретит - столько раз вместо него вставит этот участок.
Функция - это идентификатор, который компилируется в адрес вызова, по которому начинается сама функция.
У нас в ОЛ таки макросы или функции?=)
upd: Ура, сами макросы работают адекватно. Но появился новый бажок - не отслеживается состояние флоат переменных.bug.PNG
Проект тот-же, на картинке внутренности макроса VLV
Последний раз редактировалось anthrwpos; 28.08.2017 в 13:14.
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros
А разве раньше было по другому?
Ладно, не буду дожидаться ответа. Видимо не все знакомы с watch list-ом переменнных. На скрине я вижу, что Вы добавили в список несуществующие переменные для прибора (я их называю виртаульными). В просмотрщике мы видим реальные переменные. Допустимые на запись можно редактировать, в противном случае только на чтение.
Последний раз редактировалось wal79; 28.08.2017 в 14:37.
программер