# AutoLISP 输入列表缺陷常见原因及解决方法
## 常见错误表现
错误: 输入列表有缺陷
## 主要原因分析
### 1. 括号不匹配
lisp
(defun test () ; 缺少闭合括号
(princ "\nHello World")
### 2. 函数参数错误
lisp
(setq pt (getpoint "\n指定点: " 10)) ; getpoint 只能接受一个提示参数
### 3. 特殊符号未转义
lisp
(princ "显示双引号:"") ; 字符串内需要转义双引号
### 4. 参数数量不匹配
lisp
(if (= a 1) ; 缺少 else 分支参数
(princ "a=1")
)
## 调试技巧
### 1. 代码格式化
lisp
; 正确格式示例
(defun c:demo (/ pt)
(if (setq pt (getpoint "\n指定点: "))
(progn
(princ "\n坐标: ")
(princ pt)
)
(princ "\n未选择点")
)
(princ)
)
### 2. 分段注释法
lisp
(defun test ()
; (代码段1)
; (代码段2) <- 逐段取消注释定位错误
)
### 3. 使用开发工具
推荐使用 VS Code + AutoLISP 扩展,实时显示括号匹配和语法检查
## 典型错误修正对照表
| 错误代码 | 修正代码 | 说明 |
|---|---|---|
| `(setq a 1 b)` | `(setq a 1 b 2)` | setq 需要成对参数 |
| `(command "line" pt1 pt2` | `(command "line" pt1 pt2 "")` | command 需要空字符串结尾 |
| `(princ "结果:" res)` | `(princ (strcat "\n结果:" (rtos res)))` | 需要合并字符串参数 |