使用纯C重写