私はこのエラーを解決しようとしていますが、悲惨に失敗しました。 「bearer_slot」のアドレス:割り当て
警告の左オペランドとして必要
左辺値:私はのエラーを得たリストを反復しています:割り当ての左オペランドにエラーの左辺値が必要です
msc_con_list_slot msc_slot;
memset(&msc_slot, 0, sizeof(msc_slot));
msc_pdn_con_t*conn = &msc_slot.conn;
msc_ber_list_slot bearer_slot;
memset(&bearer_slot, 0, sizeof(bearer_slot));
msc_ber_t *bearer = &bearer_slot.bearer;
以下の私のコードを宣言し、それを
for(&bearer_slot=(&(conn->bearers))->head; &bearer_slot; &bearer_slot=(&bearer_slot)->next)
{
//asign value here
}
を反復処理しようとしています
多分私は何かが間違っていると思うかもしれませんが、私は本当にエラーが実際には何かを得ていないからです。
typedef struct {
int id;
} msc_ber_t;
typedef struct _msc_ber_list_slot {
msc_ber_t bearer;
struct _msc_ber_list_slot *next, *prev;
} msc_ber_list_slot;
typedef struct {
msc_ber_list_slot *head, *tail;
} msc_ber_list;
あなたの説明に感謝しますが、私は "変数bearer_slotのアドレスは許されません(それは左辺値ではありません)"という文を得ることはできません。 "@James – heike
' bearer_slot'は変数です。その値は 'bearer_slot = whatever'を使って設定します。 '&bearer_slot'は' bearer_slot'がメモリにどこに格納されているかを示す_pointer_を返します。この変数の物理的位置のこの表現を別の値に変更するのは意味がありません。専門用語では、 '&bearer_slot'は'左辺値ではなく '右辺値です。つまり、値を設定することはできません。 'x + 1 = y;'( 'x'と' y'はintなど)の文と比較してください。 'x + 1'が' rvalue'であるため、これは許されません。 – James