我看到以下代码:

static __SECTION("set_global")  struct something * p = NULL;


我很困惑。 “静态”是指此C文件的本地范围。该行上方是有关set_global:全局变量的ELF部分的注释。

因此,这基本上使变量p成为全局变量,并且可以被任何源代码访问吗?

最佳答案

静态不标识本地作用域,这意味着仅翻译单元(源文件)作用域。

static关键字标识要全局分配的变量,其寿命是整个程序运行的时间。

__SECTION(“ name”)将变量放入“ name”部分,但不影响变量的可见性。

我相信这:

static __SECTION("set_global")  struct something * p = NULL;


将p声明为指向某项结构的指针,该结构的生命周期等于程序的运行时间,该生命周期存储在名为“ set_global”的节中,并且在整个过程中(最多基于声明的位置)在其中声明文件。

关于c - static和set_global在一起:怎么来的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9334397/

10-16 05:14