Jak napisać mój kod do przykładu konkretny indeks tablicy tablicy, która jest członkiem struktury? Poniższy kod daje mi problemy.In C: Jak ustawić wskaźnik do elementu struktury, który jest tablicą?
// main.c
void clean_buffers(void); // prototype
struct DEV_STATUS {
unsigned char ADDR;
unsigned char DEV_HAS_DATA;
unsigned char ETH_HAS_DATA;
unsigned char DATA[20];
};
struct DEV_STATUS g_cmdQueue[60] = {0};
void main(void) {
clean_buffers();
while (1) {
;// MCU tasks
}
}
void clean_buffers(void) {
unsigned char theCount = 0;
byte queIdx;
for (queIdx = 0; queIdx < 59; queIdx++) {
struct DEV_STATUS *p_struct;
unsigned char *p_data;
p_struct = &g_cmdQueue[queIdx];
p_data = &p_struct->DATA;
p_struct->ADDR = 0;
p_struct->DEV_HAS_DATA = 0;
p_struct->ETH_HAS_DATA = 0;
theCount = 0;
while(*(p_data+theCount) != 0) {
*(p_data+(theCount++)) = 0;
}
}
} // EOF main.c
otrzymuję błąd kompilatora „członek struct/union oczekiwany” na następującej linii:
p_data = &p_struct->DATA;
Jak mam napisać wskaźnik gdybym miał dostęp, na przykład, specyficzne wartość danych członka struktury [3]? Jestem zdezorientowany, myślałem, że jako p_data = & p_struct-> DATA; jest zdefiniowany, powinienem być w stanie go uzyskać za pomocą * (pdata + 3), ale myślę, że czegoś brakuje.
Dzięki za wszystkie odpowiedzi, doceniam to. – Nate
Komunikat o błędzie nie ma sensu. Z jakiego kompilatora korzystasz? – AnT