2016-07-21 12 views
1

Ich benutze CCS v6 und es gab einen Fehler über die Struktur Grammatik.C-Ausdruck muss Zeiger auf Struktur oder Union Typ haben

über dem Code war ursprünglichen Zustand. aber es gab einen Fehler.

So "# 71 unvollständiger Typ ist nicht erlaubt", hatte ich geändert Code "struct MMEM mmem_ptr;" -> "struct MMEM * mmem_ptr;" Wenn ich hatte kompilieren, dass ein Teil übergeben wurde.

Aber ein anderer Teil Fehler aufgetreten ist.

if ((mem_ptr = mac_scan_alloc()) != NULL) { 
     memcpy(&SCAN_ENTRY(mem_ptr)->oord_addr, src_addr, sizeof(address_t)); 
     SCAN_ENTRY(mem_ptr)->superfrm_spec = superframe_spec; 
     SCAN_ENTRY(mem_ptr)->coord_pan_id = src_pan_id; 
     SCAN_ENTRY(mem_ptr)->channel = channel; 
    } 
#define SCAN_ENTRY(m) ((pan_descr_t *)MMEM_PTR(&m->mmem_ptr)) 

Es gab einen Fehler "133 # Ausdruck muss Zeiger-to-struct-or-Vereinigung hat Typ"

ich schon hatte dieses Problem sah verwandte Frage zu. aber ich konnte das obige Problem nicht lösen. Expression must have pointer to struct or union error

Was soll ich meinen Code beheben, um dieses Problem zu lösen?

+0

Definition von 'SCAN_ENTRY'? –

+0

@EugeneSh .: Es ist bereits gepostet. Wie auch immer, '#define SCAN_ENTRY (m) ((pan_descr_t *) MMEM_PTR (& m-> mmem_ptr))' leidet wahrscheinlich an exzessivem Und-Zeichen. – EOF

+1

Richtig .. aber warum * nach * wird es verwendet? –

Antwort

3

struct _mem_ptr_t verwendet struct mmem, bevor es definiert ist. So die Definitionen tauschen:

struct mmem { 
    struct mmem *next; 
    unsigned int size; 
    void *ptr; 
}; 

typedef struct _mem_ptr_t 
{ 
    struct _mem_ptr_t *next; ///< Next pointer in memory 
    uint8 alloc;    ///< Allocated 
    struct mmem mmem_ptr;  ///< The actual pointer to the pointer to the mem block 
} mem_ptr_t; 

Ändern der Definition von mmem_ptrstruct mmem-struct mmem * funktioniert nicht, weil Sie seine Art sind zu ändern, so dass jeder Code, der es verwendet wird, nicht so richtig zu tun.

+0

Es funktioniert. Ich danke dir sehr !!! Ich war so dumm –

Verwandte Themen