首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >specman有静态变量吗?

specman有静态变量吗?
EN

Stack Overflow用户
提问于 2009-05-25 18:04:44
回答 2查看 624关注 0票数 1

我在specman中继承了以下代码:

代码语言:javascript
复制
some_method() is {
    var a: bool;

    if (!a) {
        a = some_other_method();
    };
};

我的理解是,每次调用some_method()时,都会重新生成a,在赋值之前检查a的值是没有意义的。然而,可能我在这里遗漏了一些东西。例如,如果a是静态的,那么这段代码就有意义,这就引出了我的问题:

有没有办法让一个变量在specman中是静态的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-26 06:52:37

没有像C中那样的静态变量。如果没有初始化,方法中的变量就有它的默认值(在本例中是False),所以你应该是对的,if (!a)应该总是True

如果a是一个结构成员,情况就不同了,那么就像在其他OO语言中一样,它会在几次方法调用中保留那里的值,并且检查会更有意义:

代码语言:javascript
复制
struct some_struct_s {
    a : bool;
    some_method() is {
        if (!a) {
            a = some_other_method();
        };
    };
};

您也可以在交互式提示符上查看类似的内容:

代码语言:javascript
复制
Specman> var a : bool;
Specman> print a
  a = FALSE

这里的交互式帮助也很不错,例如try:

代码语言:javascript
复制
Specman> help variable

并选择条目(按编号) sn_eref: variables : declaring。在那里,您将找到与您的问题相关的所有信息。

干杯,丹尼尔

票数 3
EN

Stack Overflow用户

发布于 2017-06-23 22:53:25

在Specman v15.2中,静态结构成员(事件、字段、方法)被添加到语言中。静态字段不能生成、物理(%)或在when子类型中使用。

代码语言:javascript
复制
struct some_struct_s {
    a : bool;
    some_method() is {
        if (!a) {
            a = some_other_method();
        };
    };
};

-- Change field 'a' for all instances
on xxx { some_struct_s::a = TRUE; };

以下是来自teamspecman博客的一些评论:Static members in e

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/907577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档