在C中的main函数中使用静态变量是否有意义?

Gra*_*aag 5 c static program-entry-point function

就我目前对'static'关键字的理解而言,它可以防止变量被重新初始化,并且它可以防止变量在函数结束时离开内存.

在C中,我通常在变量不需要是全局变量时使用它,但也不应该在函数调用之间进行更改.(fi微控制器中断)

现在,在STM32的一些C代码中,我看到了以下内容:

int main(void)
{
  static char buffer[CONSOLEBUFFERSIZE];
  ...
Run Code Online (Sandbox Code Playgroud)

对我来说,这没有意义.此变量用于缓冲传入的命令,以便在收到终止字符时处理它们.但是我之前描述的'static'的两个属性并不适用于main函数,因为main()只调用一次而'never'结束.所以我的实际问题是:

这可能是使用我不知道的一些hocus-pocus,还是仅仅是从中断或其他函数中复制代码,程序员是否忘记了或者没有删除静态关键字?

Ing*_*rdt 12

一个区别是,静态变量通常使用程序的数据段而不是堆栈.也许这就是宣告理由bufferstatic(特别是如果CONSOLEBUFFERSIZE是大).