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

问题描述 投票:1回答:2

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

system-verilog
2个回答
1
投票

“存储策略”是生命周期。它将永远是自动的。 IEEE 1800-2012的第8.6节规定

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

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

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

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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.