" extern"的生命周期C中的变量?

时间:2016-07-11 09:26:04

标签: c extern lifetime

变量p的生命周期是多少,如果它被声明为extern int p;

它是静态的,动态的,自动的还是没有生命周期,因为没有链接?

4 个答案:

答案 0 :(得分:8)

谈论fab -R ip my_task声明引入的名称的生命周期没有多大意义 - 存储持续时间是对象的属性,而不是名称 >

另一方面,extern变量声明只能引用具有静态存储持续时间的全局变量。

答案 1 :(得分:2)

  

还是没有生命,因为没有联系?

关键字SELECT CASE WHEN INCIDENT_RK = 52080 THEN NULL ELSE CASE_RK END AS CASE_RK FROM [casemgmt4].[ecmdb4].[INCIDENT_LIVE] 表示仅声明变量,即没有为其分配存储[1]。

关键字extern与变量的生命周期无关。也就是说,变量的生命周期/范围仅取决于它在代码中的确切位置。

注意

[1]当extern

这样的作业一起使用时
extern

忽略关键字extern int i=5; ,通常的范围规则适用于变量

[2]请检查我的其他[ answer ]

Interesing :正如Stephen Prata在他的C ++ Primer Plus一书所述,关键字extern表示"使用此名称的变量,此名称是先前在外部定义的&#34 ;

答案 2 :(得分:1)

C11草案第6.2.4节说

  

在没有存储类说明符的情况下声明其标识符的对象   _Thread_local,可以是外部或内部链接,也可以是存储类   说明符static具有静态存储持续时间。它的一生就是整个执行   在程序启动之前,程序及其存储的值只初始化一次。

答案 3 :(得分:1)

该计划的生命周期。在加载时或程序启动时初始化一次。默认初始值为0.无法在块内初始化。