Ошибка синтаксиса Promela: Ошибка: неполная структура ref 'table' saw 'operator: ='
У меня есть следующие typedefs. Тип pub содержит два целых числа, а pub_table содержит массив издателей и int.
typedef pub{
int nodeid;
int tid
};
typedef pub_table{
pub table[TABLE_SIZE];
int last
};
Тогда на линии pt.table[pt.last] = p;
Я получаю сообщение об ошибке
"Ошибка: неполная структура 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
К сожалению, я не вижу, что не так в этой строке?
1 ответ
Ошибка была в том, что вы не можете назначить полную переменную typedef за один раз. Я попытался сделать это, определив локальную переменную pub p;
а затем после инициализации всех полей в р, я попытался назначить за один раз здесь pt.table[pt.last] = p
, Мне удалось решить это так:
pt.table[pt.last].nodeid = node_id;
pt.table[pt.last].tid = topic_id;
REF:
Текущая реализация Spin налагает следующие ограничения на использование объектов typedef. Невозможно присвоить значение полного объекта typedef непосредственно другому такому объекту того же типа в одном назначении.