PICC 基本上符合 ANSI 标准,除了一点:它不支持函数的递归调用。其主要原因是因
为 PIC 单片机特殊的堆栈结构。在前面介绍 PIC 单片机架构时已经详细说明了 PIC 单片机
中的堆栈是硬件实现的,其深度已随芯片而固定,无法实现需要大量堆栈操作的递归算法;
另外在 PIC 单片机中实现软件堆栈的效率也不是很高,为此,PICC 编译器采用一种叫做“静
态覆盖”的技术以实现对 C 语言函数中的局部变量分配固定的地址空间。经这样处理后产
生出的机器代码效率很高,按笔者实际使用的体会,当代码量超过 4K 字后,C 语言编译出
的代码长度和全部用汇编代码实现时的差别已经不是很大(<10%),当然前提是在整个 C
代码编写过程中须时时处处注意所编写语句的效率,而如果没有对 PIC 单片机的内核结构、
各功能模块及其汇编指令深入了解,要做到这点是很难的。