0

在c中,当一个变量在函数中定义为静态时,该变量的值一直保持不变。所以很可能,它存储在 bss 或数据部分。

但是,在 Eclipse CDT 调试中,当尝试检查该变量时,在表达式窗格中键入变量名只会在堆栈帧在函数中时显示该变量,如局部变量。

它是eclipse中的错误吗?

编辑:在 IAR Embedded Workbench 中,函数中的静态变量可以在函数之外在调试时观察,所以这是可能的。

4

2 回答 2

0

虽然变量实际上存储在堆中......但变量的范围仍然是函数的本地。它的值在该函数之外没有任何意义,并且在函数之外它永远不应该改变......除非您将指针传递给它,在这种情况下,您可以在任何可以访问该指针的函数中查看它。

所以......不......这不是一个错误。

于 2013-04-04T18:33:26.547 回答
0

您需要使用函数限定静态变量以确定范围,例如foo::myvar是否myvar在函数中定义foo

于 2013-04-04T18:37:43.950 回答