gpt4 book ai didi

c - 在中断处理程序中使用 C block 作用域?

转载 作者:行者123 更新时间:2023-12-05 01:28:41 26 4
gpt4 key购买 nike

在函数中或特别是在中断处理程序中使用 C block 范围有什么优点或缺点吗?

来自链接 - http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472i/CJAIIDCG.html - 引用堆栈使用。

通常,您可以通过以下方式降低程序的堆栈要求:

  1. 编写只需要少量变量的小函数。
  2. 避免使用大型局部结构或数组。
  3. 避免递归,例如,通过使用替代算法。
  4. 最大限度地减少函数中每个点在任何给定时间使用的变量数量。
  5. 使用 C block 作用域并仅在需要的地方声明变量,从而重叠不同作用域使用的内存。

使用 C block Scope 的优点或缺点不是很清楚。

最佳答案

如果你写:

{
int foo[1000];
int bar[1000];
… code that uses foo …
… code that uses bar …
}

然后 foobar 存在于整个 block 并且必须使用不同的内存。 (编译器/优化器可能会意识到它们没有同时使用并安排使用相同的内存,但各种因素都会干扰这一点,因此您不能依赖它。)

如果你写:

{
{
int foo[1000];
… code that uses foo …
}
{
int bar[1000];
… code that uses bar …
}
}

那么 foobar 只存在于不同的时间,因此编译器可以为它们使用相同的内存。

关于c - 在中断处理程序中使用 C block 作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47510286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com