Среда программирования на AutoLISP в графической системе AutoCAD (Справочник), страница 18

В некоторых ситуациях компилятор не может распознать намеренья определения переменных как глобальные: использование переменных из подсказки AutoCAD ‘command’ или с отладочными средствами ; при передачи имени переменной  в строке или в форме с кавычками; при использовании неместнных переменных для передачи параметров между функциями, кампилируемыми раздельно. См. ниже функцию SPECIAL.

Функциональные аргументы

В некоторых случаях компилятор может не узнать функциональные аргументы, представленные текстовой строкой, заключенных в кавычки (т.е. имена функций или lambda-выражений). Поэтому может оказаться необходимым показать их явным образом, используя форму FUNCTION. Во всех других отношениях она такая же, как и функция QUOTE.

Максимальное количество параметров

Максимальное количество параметров, используемых в определяемых пользователем функциях и предопределенных функциях  с переменным количеством параметров, не должно превышать 32.

Функции в которых можно использовать  любое количество параметров в оригинальном оверлее Auto LIPS, но которые имеют ограничение до 32 параметров в  оверлее, поддерживаемом  компилятором: + - * / =  / =  <  < =  >  >=   and append bool expt list logand logior lsh mapcar  max  min  or  rem strcat strlen.

Функции, на которые это ограничение не распространяется: command cond debug defun  foreach lambda progn  repeat setg trace undebug  untrace whil.

5.6 Специальные функции среды компилятора

(special <список переменных>)

предназначена для объявления  переменных глобальными. Эта функция  имеет смысл только для компилятора и не делает ничего при использовании с интерпритатором. Чтобы такое объявление  было эффективным, его необходимо  поместить на  верхнем уровне программы, а не внутри  определения функции или обращения к ней.

(nextatom [<следующий>])

предназначен для доступа ко всем  существующим  атомам, поскольку при работе с компилятором  запрещается пользоваться переменной  ATOMLISY.Аргумент <следующий> предназначен для определения начальных обращений от обращений “выделения следующего атома”.

6. Средства отладки в среде стандартного AutoLISP

(trace <функция>…)

используется как средство  отладки. Функция  trace  устанавливает режим трассировки для  заданных <функций> и возвращает имя последней функции. При выполнении функции на экране появляется точка входа в функцию (с отступлением на глубину вложенности функции)  и  печатается результат выполнения функции (см. функциюUNTRACE).

(untrace <функция> …)

снимает режим трассировки для указанных функций и возвращает имя последней функции.

(*error* <строка>)

определяемая пользователем функция, трактующая ошибки. Если она не nil, то выполняется как функциявсякий раз, когда AutoLISP обнаруживает ошибку. Функция может иметь один аргумент – строку, в которую передается описание ошибки. Код последней ошибки сохранеенной AutoCAD сохраняется в системной переменной ERRNO.

7. Средства отладки в среде компилятора AutoLISP

Текущая версия средств отладки предназначена для использования с интерпретируемыми (нескомпилированными) программами. При использовании для отладки скомпилированных программ большая часть информации, полезной для отладки, будет потеряна.

Средства отладки и обработки ошибок для оверлея AutoLISP и для Расширенного AutoLISP включают:

·  возможность приостанавливать выполнение основной программы в следующих случаях:

-  ошибка (вызванная явным оброщением пользоваталя или интерпретатором);

-  вызов функции, помеченной для отладки;

-  обращение к всторенной функции BREAK;

-  прерывание с пульта;

·  возможность продолжить выполнение, начиная с точки при остановки (кроме при остановки из–за ошибки);

·  возможность выделить часть в так называемое “окно ошибок”, когда при появлении внутри этого окна любой программой ошибки или ошибки из-за неправильного ввода, можно продолжить выполнение программы за пределами этого окна;