就我目前对“静态”关键字的理解而言,它可以防止变量被重新初始化,并且可以防止变量在函数结束时离开内存。
在 C 中,我通常在变量不需要是全局变量时使用它,但也不应该在函数调用之间更改。(fi 微控制器中断)
现在,在 STM32 的一些 C 代码中,我看到了以下内容:
int main(void)
{
static char buffer[CONSOLEBUFFERSIZE];
...
对我来说,这没有意义。此变量用于缓冲传入的命令,以便在接收到终止字符时对其进行处理。但是我前面描述的“静态”的两个属性不适用于主函数,因为 main() 只被调用一次并且“永不”结束。所以我的实际问题:
这可能是使用了一些我不知道的恶作剧,还是只是从中断或其他函数中复制代码,而程序员是否忘记或不想删除 static 关键字?