c - MikroC 中的嵌套调用限制是什么?

标签 c embedded pic mikroc

我想知道什么是嵌套调用限制。我正在使用 MikroC 进行 PIC 编程。

它说了以下限制,

mikroC PRO for PIC limits the number of non-recursive nested calls to:

  • 8 calls for PIC12 family,
  • 8 calls for PIC16 family,
  • 16 calls for PIC16 Enhanced family.
  • 31 calls for PIC18 family.

是外部函数调用限制还是If else还是循环调用限制?什么嵌套调用?代码中如何计数来识别是否兴奋?

最佳答案

没有任何中断的 PIC16 示例:

这段代码没问题:

/* prototypes */
void func1 (void);
void func2 (void);
void func3 (void);
void func4 (void);
void func5 (void);
void func6 (void);
void func7 (void);
void func8 (void);

void func1(void) {
    /* do something here */
}
void func2(void) {
    /* do something here */
}
void func3(void) {
    /* do something here */
}
void func4(void) {
    /* do something here */
}
void func5(void) {
    /* do something here */
}
void func6(void) {
    /* do something here */
}
void func7(void) {
    /* do something here */
}
void func8(void) {
    /* do something here */
}

int main {
    func1();
    func2();
    func3();
    func4();
    func5();
    func6();
    func7();
    func8();
}

这段代码不好:

/* prototypes */
void func1 (void);
void func2 (void);
void func3 (void);
void func4 (void);
void func5 (void);
void func6 (void);
void func7 (void);
void func8 (void);

  void func1(void) {
    func2();
}
void func2(void) {
    func3();
}
void func3(void) {
    func4();
}
void func4(void) {
    func5();
}
void func5(void) {
    func6();
}
void func6(void) {
    func7();
}
void func7(void) {
    func8();             /* here the stack reached 8. this will cause a problem */
}
void func8(void) {
    /* do something here */
}

int main {
    func1();
} 

关于c - MikroC 中的嵌套调用限制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52474721/

相关文章:

从 UTF8 转换为 UTF16 LE C 编程中的数学运算的概念

将 if 语句转换为 for 循环?

assembly - 在 20 MHz(?) 时钟上添加 1 秒延迟

c++ - 如何在 Linux 上用 C++ 计算 SHA-512 哈希值?

c - 数学运算顺序算法

c - 使用c的结构和指针

c - 如何使ARM1136JFS (ARM v6) MMU在物理地址空间和虚拟地址空间之间有一对一的映射?

interface - 处理器与高速外设之间的通信

c - 通用 MPLAB X、XC8 和 C。跨函数和源文件使用变量

无法将 C 程序编译为 PostgreSQL 存储过程