2009-05-25 10 views
1

은 내가 상속 Specman을에 다음 코드가 있습니다specman에 정적 ​​변수가 있습니까?

some_method() is { 
    var a: bool; 

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

내 이해마다 some_method()a가 새롭게 생성된다,라고한다는 것입니다, 그리고이 할당되기 전에 a의 값을 확인 것은 의미가 없습니다. 그러나, 내가 여기서 뭔가를 놓친 것일 수도 있습니다. 예를 들어 a이 정적이라면이 코드는 제 질문과 관련이 있습니다.

specman에서 변수가 정적 일 수있는 방법이 있습니까?

답변

3

C와 같은 정적 변수가 없습니다. 초기화되지 않은 경우 메소드의 변수에 기본값 (이 경우 False)이 있으므로 은 항상 True이어야합니다.

struct some_struct_s { 
    a : bool; 
    some_method() is { 
     if (!a) { 
      a = some_other_method(); 
     }; 
    }; 
}; 

당신은 같은 물건을 확인하실 수 있습니다 : 다른 OO 언어에서 여러 메소드 호출을 통해이 값을 유지 것이며 검사가 더 나을 다음과 같은 a는, 구조체의 멤버 인 경우

상황이 다른 것 이 또한에 대화 형 프롬프트가

Specman> var a : bool; 
Specman> print a 
    a = FALSE 

는 대화 형의 도움은, 예를 들어도 좋은 시도된다

Specman> help variable 

을 입력하고 번호순으로 sn_eref: variables : declaring을 선택하십시오. 거기에 귀하의 질문에 대한 모든 관련 정보를 찾을 수 있습니다.

건배,

0

정적 구조체 멤버 (이벤트, 필드, 메소드) 다니엘은 Specman을의 v15.2의 언어에 추가되었습니다. 정적 필드는 생성 될 수 없으며 물리적 유형 (%)이거나 부속 유형이 사용될 때 사용됩니다. Static members in e

:
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 블로그에서 몇 가지 의견입니다