方法上的local关键字是否意味着自动存储?

时间:2018-03-06 12:14:41

标签: system-verilog

在类中的local function中声明的变量具有静态或自动的存储策略?

2 个答案:

答案 0 :(得分:1)

"存储政策"是生命周期。它将永远是自动的。 IEEE 1800-2012的第8.6节陈述

  

声明为类类型一部分的方法的生命周期应是自动的。宣布一个是非法的   具有静态生命周期的类方法。

您可以将类方法声明为static,但在该上下文中,它意味着完全不同的东西。第8.10节规定:

  

静态方法与具有静态生命周期的任务不同。前者指的是方法的生命周期   在类中,而后者是指任务中参数和变量的生命周期。

因此,即使没有该类的对象,也可以调用静态方法。

答案 1 :(得分:0)

类成员的localprotected属性对存储策略没有影响。它只会影响用于访问成员的标识符的可见性。

话虽这么说,类成员的存储策略也会影响该标识符的可见性。因此,这两个功能都可以限制访问,但原因各不相同。

例如,您永远不能从声明它的范围之外访问自动变量。无论该范围是类方法还是简单任务都无关紧要。并且该范围的默认生命周期无关紧要。

相反,如果在作用域中声明静态变量,则可以从该作用域外部访问该变量,但需要考虑所有其他可见性规则。