Skip to content

附录C:错误代码

本附录汇总常见错误和警告,方便快速诊断问题。


功能说明:常见编译错误及解决方案。

错误代码说明解决方案
E0001语法错误检查代码语法
E0002解析错误检查缩进/括号
E0003类型错误检查类型声明
E0006未找到成员检查属性名
E0007不兼容类型类型转换检查

常见错误示例:

# E0001: 缩进错误
def foo():
print("bad indent") # 注意缩进一致性
# E0003: 类型错误
cdef int x = "hello" # str不能赋给int

功能说明:常见运行时错误及处理。

错误说明解决方案
MemoryError内存分配失败检查内存使用,释放资源
IndexError索引越界检查数组边界
TypeError类型不匹配检查参数类型
ValueError值无效检查输入值范围

示例:

# IndexError示例
cdef int safe_get(double[:] arr, int index):
if index < 0 or index >= len(arr):
raise IndexError("out of bounds")
return arr[index]

功能说明:常见警告及建议。

警告说明建议
W0001类型不匹配添加显式类型声明
W0002未使用变量删除或使用变量
W0003隐式类型转换显式转换或声明类型
W0004弃用特性迁移到新API

消除警告示例:

# W0001: 添加类型声明消除警告
cdef int x = 10 # 显式声明
y = x + 1 # y类型从x推断

功能说明:错误诊断方法。

  1. 使用cython -a:生成annotate HTML分析代码
  2. 查看生成的C代码:定位具体问题
  3. 简化问题代码:创建最小复现用例
  4. 检查类型声明:确保类型匹配