嵌入式环境中的全局或静态声明是否更安全?

sam*_*m_k 4 c embedded

我可以选择声明变量static或global.

我想在一个函数中使用变量来维护计数器.

例如

void count()
{
   static int a=0;
   for(i=0;i<7;i++)
   {
      a++;
   }

}
Run Code Online (Sandbox Code Playgroud)

我的另一个选择是将变量a声明为全局变量.我只会在这个函数count()中使用它.

哪种方式最安全的解决方案?

Bla*_*iev 10

它仅在编译和链接时才很重要.一个static局部变量应存放在完全相同的方式作为一个全球性初始化.

声明局部static变量仅影响其在语言级别的可见性,使其仅在封闭函数中可见,但具有全局生命周期.

未标记的全局变量(或一般的任何对象)static具有外部链接,并且链接器在合并每个目标文件时将考虑该符号.

标记的全局变量static仅在当前转换单元内具有内部链接,并且链接器在合并各个转换单元时将不会看到这样的符号.