
Сообщение от
Владимир Ситников
1) Можно различать старые проекты и новые? Ну, если проект создан в ОЛ 1.9, то можно запрещать циклы на всех уровнях.
В старых проектах можно либо сразу ругаться, либо предупреждать. Можно галочку сделать "я_хочу_циклы_из_связей__понимаю_что_программа_мож ет_не_работать__клянусь_не_обращаться_в_поддержку_ при_этом"
Но лучше вообще везде запретить циклы.
2) Так ли важно "не ломать"? Реально был случай на форуме, когда товарищ утверждал, что "программа рабочая", а по факту в ней цикл.
Проблема даже не в том, что от цикла программа становится "вообще нерабочей". А в том, что от цикла неявная задержка может возникнуть в самом неожиданном месте.
3) Утверждалось, что макросы раскрываются при компиляции (т.е. full inline). Полагаю, неявная задержка расставляется после этого. Из этого делаю вывод, что по факту неявная задержка может возникнуть "как бы в макросе" (т.е. в том месте программы, который находился в макросе). В итоге будет старое "макрос сам по себе рабочий, а вставляем его в общую программу и беда-печаль".
Всё так? Или там супер-алгоритм, который запрещает возникновение неявной связи в том месте, которое "возникло из макроса"?