c - MikroC 中的嵌套调用限制是什么?
问题描述
我想知道什么是嵌套调用限制。我正在使用 MikroC 进行 PIC 编程。
它说以下限制,
mikroC PRO for PIC 将非递归嵌套调用的数量限制为:
- PIC12 系列的 8 次调用,
- PIC16 系列的 8 次调用,
- 16 要求 PIC16 增强型系列。
- PIC18 系列的 31 次调用。
它是外部函数调用限制还是 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();
}
推荐阅读
- mongodb - 是否可以保护 Google App Engine 和 Google Compute Engine 之间的通信?
- node.js - 两分钟超时后:ERR_EMPTY_RESPONSE -axios-post - nodejs
- html - CSS 桌面版和移动版的不同网格
- windows - 我可以在 Powershell 中“打印”虚拟机的名称吗?
- javascript - 使用扩展刀片中的按钮来触发模式不起作用(刀片 laravel)
- tensorflow - Tensorflow:AttributeError:'Tensor'对象没有属性'sum'
- c - 如何在C中将数据添加到txt文件?
- python - Seaborn FacetGrid - 更改所有图的 y 轴旋转?
- javascript - 无法通过单击事件选择一个表中的所有 TD
- ios - 如何访问容器中各部分的行?