ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
440178 Топик полностью
fk0, легенда (09.09.2013 23:38, просмотров: 78) ответил Mazur на Как мне сделать следующее? Скажем, КА. В состояниях идентичные участки. Как сделать общую точку выхода? Что-то не вижу в K&R примеров. Goto?
Таки в функцию но... язык C крайне убог. В паскале, например, есть вложенные функции (имеющие доступ к переменным и функциям объемлющей функции, разумеется). В lisp, javascript, perl... аналогично. Даже в tcl (через upvar или uplevel). В C же вызываемая функция, увы, оторвана от контекста вызывающей. И зачастую это просто не позволяет вынести код в отдельную функцию. Как выкрутиться. Если код небольшой, то его можно вынести в макрос... Если компилятор gcc, то он с ключём -std=gnu99 начинает поддерживать вложенные функции а-ля паскаль. Но не на всех платформах это нормально работает (нужен исполняемый стек, либо какой-то аналогичный механизм выделения из адреса функции адрес frame pointer для объемлющей функции...) Можно перменные функции сделать статическими на уровне модуля, наконец. Или на C++ завернуть в класс.
[ZX]