私はCCS v6を使用していますが、構造文法に関するエラーがありました。C式に構造体または共用体の型へのポインタが必要です
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;
struct mmem {
struct mmem *next;
unsigned int size;
void *ptr;
};
上記のコードは元の状態です。しかし、エラーがありました。 "#71不完全なタイプが許可されていません"
だから、私は変わっていたコード "のstruct MMEM mmem_ptr;" - > "構造体MMEM * mmem_ptr;" 私がコンパイルしたときは、その部分が渡されました。
しかし、別の部分でエラーが発生しました。
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))
にエラーが発生しました
を「#133式はポインタ・ツー・構造体・オア・ユニオン型でなければなりません」私はすでにこの問題についての関連質問を見ていました。私は上記の問題を解決するために理解できませんでした。 Expression must have pointer to struct or union error
この問題を解決するにはどうすればよいですか?
'SCAN_ENTRY'の定義はありますか? –
@EugeneSh .:すでに掲載されています。とにかく、 '#define SCAN_ENTRY(m)((pan_descr_t *)MMEM_PTR(&m-> mmem_ptr))'はおそらく過度のアンパサンドに苦しんでいるでしょう。 – EOF
右ですが、なぜ*後*使用されていますか? –