2015-02-01 14 views
0

다음과 같은 typedef가 있습니다. PUB 유형은 두 개의 int를 유지하며 pub_table은 게시자와 int 배열을 유지합니다.Promela 구문 오류 : 오류 : 불완전한 구조 참조 '테이블't saw 'operator : ='

typedef pub{ 
    int nodeid; 
    int tid 
}; 

typedef pub_table{ 
    pub table[TABLE_SIZE]; 
    int last 
}; 

다음 라인 나는

" Error: incomplete structure ref 'table' saw 'operator: ='"

if 
:: node_type == publisher -> 
     pub p; 
     p.nodeid = node_id; 
     p.tid = topic_id; 
     pt.last = pt.last + 1; 
     pt.table[pt.last] = p; 
fi 

불행하게도 나는 그 라인에 문제가 있는지 볼 수 없다는 오류를 받고 있어요 pt.table[pt.last] = p;에?

답변

1

오류는 한 번에 완전한 typedef 변수를 할당 할 수 없기 때문에 발생했습니다. 로컬 변수 pub p;을 정의한 다음 p의 모든 필드를 초기화 한 후 여기에서 하나를 할당하려고 시도했습니다. pt.table[pt.last] = p.

pt.table[pt.last].nodeid = node_id; 
pt.table[pt.last].tid = topic_id; 

REF :

The current Spin implementation imposes the following restrictions on the use of typedef objects. It is not possible to assign the value of a complete typedef object directly to another such object of the same type in a single assignment.

나는 그런 식으로 그것을 해결하기 위해 관리