是嵌入式编译器提供的本地静态变量?

时间:2010-02-11 21:21:16

标签: c static embedded variables local

我正在开发一个c lib,这也适用于嵌入式系统 但我对嵌入式开发并不是很深入所以我的问题

是大多数能够处理局部静态变量的嵌入式编译器 - 我将在进一步开发中假设这些变量 要么 是否有#define,我可以使用#ifdef来创建一个全局变量

THX

4 个答案:

答案 0 :(得分:2)

他们应该,因为局部静态变量是C标准的一部分。

当然,没有什么能阻止他们创建一个没有所有功能的类C语言。但由于这不是标准的,因此识别特征缺乏的方式也是非标准的。

答案 1 :(得分:1)

由于static变量是标准的一部分,因此您应该是安全的。

您的编译器可能找不到支持的问题(大多数编译器都能很好地处理标准),但是您需要设置运行时环境的代码。在加载代码时,确保在跳转到C代码之前正确解压缩可执行文件的可执行文件,只读数据,读写数据和零初始化部分。

答案 2 :(得分:0)

本地静态变量是C标准的一部分,所以是的。

\ {迂腐

如果您的代码组织良好,使用不同子系统的单独文件(编译单元),您可能最好拥有一个带有文件范围的静态变量。这样可以更容易地将使用它的代码分解为单独的函数。如果使用该变量的代码很复杂,这将允许您将其拆分为更小的静态函数,这些函数更易于阅读,理解和调试。

}

答案 3 :(得分:0)

是。一旦编译器完成了对源代码的咀嚼,局部静态与全局变量没什么不同。我可以想到异国情调的处理器,其中全局变量会成为一个问题,但我怀疑你会遇到很多问题。

关于嵌入式处理器上全局变量的真正有趣之处在于,您通常可以选择让编译器将它们分配到ROM,EEPROM等中。