2012-02-17 62 views
0

我看到下面的代码:static和set_global在一起:怎么回事?

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

我很困惑。 “静态”是指本地范围,指这个C文件。在该行的上面有关于set_global的全部内容的评论:全局变量的ELF部分。

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

回答

1

静态不识别局部范围,它表示平均翻译单元(源文件)唯一的范围。

static关键字标识一个要全局分配的变量,其生存期是整个程序运行的变量。

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

我相信,这:

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

声明数p作为一个指针指向一个财产以后结构,将有一个寿命等于该程序,其被存储于命名为“set_global”部分的运行,并这是(至多,基于声明的位置)在整个声明文件中都可见。