LINUX.ORG.RU

Умеет ли это Си


0

0

Может ли Си оперировать метками, как переменными? Т.е. могу я сохранить значение метки в указателе, а потом сделать goto pointer? С ассемблером-то можно, наверное, выкрутиться, а вот с помощью самого языка?..

P.S. Не предлагайте альтернативных вариантов (указатели на ф-ии и пр.)

P.S.S. А какие языки это умеют?

★★

Ответ на: комментарий от anonymous

Я знаю про longjmp. Но в K&R смущают слова "setjmp сохраняет текущую информацию о вызовах в env". После longjmp он чего-то лишнее восстанавливает, не так ли?

xTERM ★★
() автор топика

>P.S. Не предлагайте альтернативных вариантов (указатели на ф-ии и пр.)

А всё же можно поинтересоваться зачем?

>P.S.S. А какие языки это умеют?

По-моему, BASIC умеет ;)

Davidov ★★★★
()

Это умеет GCC, но это нестандартное расширение, лучше по возможности избегать. Да, работает внутри одной функции только, конечно же.

Пример использования - см. в интерпретаторе байткодов в OCaml.

anonymous
()

> P.S.S. А какие языки это умеют?

из компилируемых языков -- в фортране испокон веков был assigned goto. Но его убрали из стандарта.

dilmah ★★★★★
()

Этого нет в стандарте C, потому что это не портабельно. Не забывайте, что x86 не единственная архитектура.

anonymfus ★★★★
()

Если тебе нужна подобная хня, пиши на асме, а языки программирования на то и созданы, что-бы абстрагироваться от некоторых аппаратных особенностей, там самым, ограничивая наши возможности в прямом использовании тех или иных возможностей архитектуры. Да, да, именно так, а вы что хотели, и на x... сесть и конфетку скушать?. И чем выше уровень абстрагирования, тем менее за языком видна аппаратура. Возьмите Haskell, можно сказать верх абстрактности, там не только меток, да и вообще как такового потока выполнения явно не задается :)

fmjs
()
Ответ на: комментарий от fmjs

присваиваемые метки это тоже абстракция.. Разные абстракции нужны, разные абстракции важны..

dilmah ★★★★★
()
Ответ на: комментарий от fmjs

Чувак, не кизди. Иди, посмотри как с этой умной фичёй делаются интерпретаторы шитого кода.

anonymous
()
Ответ на: комментарий от anonymous

> Чувак, не кизди. Иди, посмотри как с этой умной фичёй делаются интерпретаторы шитого кода.

Они и без нее могут обходится.

fmj
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.