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 -- )
      { 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
;
Ибо вылезают какие-то странные глюки. Приходится создавать ConsoleWindowInfo с помощью CREATE. Почему?

Автор:  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/