Во многих языках единственными утверждениями, которые не имеют единственной записи, являются те, которые содержат метки для использования с операторами goto
или switch
, расположенными вне их, и единственными утверждениями, которые не имеют единственного выхода это те, которые содержат goto
для внешнего местоположения, вызывают исключение или иным образом принудительно раскручивают стек. Обратите внимание, что для любого конкретного вызова функции единственной "нормальной" точкой выхода будет код, следующий сразу за этим вызовом.
Понятие однократного входа / однократного выхода может быть неясным для тех, кто никогда не работал с кодом, который не использовал такой подход. Примеры последнего могут быть найдены при написании кода для платформ, таких как Atari 2600, где пространство ОЗУ часто находится в абсолютной надбавке. Если фрагмент кода будет вызываться из кода, который показывает экран заголовка, или из игровой логики, и там нельзя позволить себе два байта стекового пространства, необходимого для инструкции вызова подпрограммы, это не будет редкостью перейти к коду (вместо использования инструкции «JSR» [перейти к подпрограмме]) и выйти из кода, проверив, идет ли игра и вернувшись к соответствующему месту на «экране заголовка шоу» или « выполнить игровую логику "кода. Такой дизайн может быть неудобно поддерживать, если возникает необходимость вызывать его из большего количества мест в коде, но такие методы могут быть необходимы, если объем ОЗУ действительно ограничен (например, один имеет всего 128 байтов, как в Atari 2600).