c - 在嵌入式环境中全局声明还是静态声明更安全?

标签 c embedded

我可以在声明变量静态或全局之间做出选择。

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

例如

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

}

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

哪种方式最安全?

最佳答案

它只在编译和链接时有影响。 static 局部变量应该以与全局变量完全相同的方式存储和初始化。

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

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

标记为static 的全局变量仅在当前翻译单元内有内部链接,链接器在合并各个翻译单元时不会看到这样的符号。

关于c - 在嵌入式环境中全局声明还是静态声明更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7848144/

相关文章:

c - Winsock C TCP 套接字

c++ - 在已编译的 C 程序中添加/编辑字符串?

c - 调试 ARM7 内存问题

c - USART3初始化STM32F103RB

linux - 有没有复制更新替代命令?

c - IAR(对于STM8)中每100微秒调用的例程的测量时间

c++ - libev,为什么在 evloop 中 recv 事件的编号是 3?

c - Fwrite 输出文件 0kb

c - for循环一定有错误

c - @sign in C 变量声明