Forth http://fforum.winglion.ru/ |
|
По поводу локальных переменных... http://fforum.winglion.ru/viewtopic.php?f=24&t=1377 |
Страница 1 из 1 |
Автор: | объелся груш [ Сб июн 21, 2008 10:22 ] |
Заголовок сообщения: | По поводу локальных переменных... |
Я могу написать так: Код: : ->ConsoleScreenBufferSize ( length height -- ) А вот так я написать не могу:{ Length Height \ ScreenBufferSize -- } Length AT ScreenBufferSize COORD::X W! Height AT ScreenBufferSize COORD::Y W! ScreenBufferSize StdOutHandle SetConsoleScreenBufferSize DROP ; Код: : ->ConsoleWindowSize ( length height -- ) Ибо вылезают какие-то странные глюки. Приходится создавать ConsoleWindowInfo с помощью CREATE. Почему?
{ Length Height \ ConsoleWindowInfo [ SMALL_RECT::/SIZE ] -- } 0 AT ConsoleWindowInfo SMALL_RECT::Left W! 0 AT ConsoleWindowInfo SMALL_RECT::Top W! Length 1- AT ConsoleWindowInfo SMALL_RECT::Right W! Height 1- AT ConsoleWindowInfo SMALL_RECT::Bottom W! AT ConsoleWindowInfo TRUE StdOutHandle SetConsoleWindowInfo DROP ; |
Автор: | ygrek [ Сб июн 21, 2008 13:19 ] |
Заголовок сообщения: | |
Потому что надо внимательно читать документацию. Код: : ->ConsoleWindowSize ( length height -- )
{ Length Height \ [ SMALL_RECT::/SIZE ] ConsoleWindowInfo -- } И использовать AT не надо, т.к. переменная ConsoleWindowInfo будет оставлять адрес зарезервированной области. lib/ext/locals.f писал(а): Или { a b c d \ e f[ EVALUATE_выражение ] -- i j }
Это значит что для переменной f[ будет выделен на стеке возвратов участок памяти длиной n байт. Использование переменной f[ даст адрес начала этого участка. \В стиле MPE\ Или { a b c d \ e [ 12 ] f -- i j } Это значит что для переменной f будет выделен на стеке возвратов участок памяти длиной 12 байт. Использование переменной f даст адрес начала этого участка. |
Автор: | объелся груш [ Сб июн 21, 2008 23:16 ] |
Заголовок сообщения: | |
ygrek Спасибо! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |