我看到以下代码:
static __SECTION("set_global") struct something * p = NULL;
我很困惑。 “static”表示此C文件的本地范围。在线上有关于set_global的注释:全局变量的ELF部分。
所以这基本上使变量p成为一个全局变量,任何源代码都可以访问它?
答案 0 :(得分:1)
静态不识别本地范围,它意味着平均翻译单元(源文件)的范围。
static
关键字标识一个全局分配的变量,其生命周期是整个程序运行。
__SECTION(“name”)将变量放在“name”部分,但不影响变量的可见性。
我相信这一点:
static __SECTION("set_global") struct something * p = NULL;
将p声明为指向somthing结构的指针,该结构的生命周期等于程序的运行,该结构存储在名为“set_global”的部分中,并且(最多,基于声明的位置) )在声明它的文件中可见。