System verilog 方法上的local关键字是否意味着自动存储?
类中的System verilog 方法上的local关键字是否意味着自动存储?,system-verilog,System Verilog,类中的局部函数中声明的变量有哪些存储策略,静态的还是自动的?存储策略是生命周期。它总是自动的。IEEE 1800-2012第8.6节规定 声明为类类型一部分的方法的生存期应是自动的。申报财产是违法的 使用静态生存期初始化方法 您可以将类方法声明为静态的,但在该上下文中,它的含义完全不同。第8.10节规定: 静态方法不同于具有静态生存期的任务。前者是指方法的生命周期 类中,后者指任务中参数和变量的生存期 因此,即使不存在该类的对象,也可以调用静态方法。类成员的local或protected属性对存
局部函数
中声明的变量有哪些存储策略,静态的还是自动的?存储策略是生命周期。它总是自动的。IEEE 1800-2012第8.6节规定
声明为类类型一部分的方法的生存期应是自动的。申报财产是违法的
使用静态生存期初始化方法
您可以将类方法声明为静态的,但在该上下文中,它的含义完全不同。第8.10节规定:
静态方法不同于具有静态生存期的任务。前者是指方法的生命周期
类中,后者指任务中参数和变量的生存期
因此,即使不存在该类的对象,也可以调用静态方法。类成员的local
或protected
属性对存储策略没有影响。它只影响用于访问成员的标识符的可见性
也就是说,类成员的存储策略也会影响该标识符的可见性。因此,这两种功能都可以限制访问,但原因不同
例如,您永远不能从声明自动变量的范围之外访问它。该范围是类方法还是简单任务并不重要。而且该范围的默认生存期是多少并不重要
相反,如果在范围内声明静态变量,则可以从该范围之外访问该变量,但需要考虑所有其他可见性规则。