Это для компилятора MPLABXC8 Я исследовал и нашел несколько связанных тем. Но не смог решить мою проблему. Моего массив ЬурейеГоПередача указателя на массив структур
typedef volatile struct OneStageOpTag
{
unsigned DevID1: 4;
unsigned SetCmd1 : 4;
unsigned RdyResponse1 :4;
unsigned DevID2: 4;
unsigned SetCmd2 : 4;
unsigned RdyResponse2 :4;
unsigned DevID3: 4;
unsigned SetCmd3 : 4;
unsigned RdyResponse3 :4;
}OneStageOpType[3];
Теперь мой переменный
OneStageOpType CurOperPlan={0};// I checked this one -
//-in Simulator 3 element array of structure created
Теперь я передаю указатель на мою функцию
GetOperationSeqForTransportReq(1,1,&CurOperPlan);
ниже функции
void GetOperationSeqForTransportReq(StationIDType SourseStnID,StationIDType DestiStnID,
OneStageOpType *CurTransportPlan)
{
NOP();
CurTransportPlan[0]->DevID1=5; // This is Ok
CurTransportPlan[1]->DevID1=5; // This is Not working
}
только 0-й элемент доступна. Также компилятор жалуется на то, что указатель структуры передан в указатель структуры массива. Я попытался включить функцию указателя. Кажется, он накладывает указатель на массив. Мне кажется, что &CurOperPlan
является указателем адреса только для структуры 0-го индекса. Весь массив не содержит его. прошу помочь.
Автор: _not_ typedeffing массивов. –
Помните, что сам массив является указателем. Вы разыскиваете указатель (массив) здесь: 'GetOperationSeqForTransportReq (1,1, & CurOperPlan);' либо использовать 'GetOperationSeqForTransportReq (1,1, CurOperPlan);' или '(* CurTransportPlan) [0] -> DevID1 = 5; 'с типом' OneStageOpTag * '. – Myst
Как заметил @ ThomasPadron-McCarthy - ваш код ошибся, когда вы набрали массив. – Myst