повторение списка: ошибка lvalue требуется в качестве левого операнда присваивания - PullRequest
1 голос
/ 20 июля 2011

Я пытаюсь решить эту ошибку, но с треском провалилась. Я объявил мой код ниже

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 
}

Я получил ошибку:
Значение l требуется в качестве левого операнда присваивания
предупреждение: адрес «bearer_slot» всегда будет оцениваться как «true»

Может быть, я что-то упускаю, потому что я не понимаю, что на самом деле означает ошибка. Спасибо за вашу помощь

изменить добавить структуру:

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;

Ответы [ 2 ]

3 голосов
/ 20 июля 2011

Вы не можете сделать это:

&bearer_slot=(&(conn->bearers))->head;

Покажите нам, как определяется msc_ber_list_slot.

Я полагаю, вы хотите что-то как это:

struct msc_ber_list_slot *slot;
for(slot=conn->bearers.head; slot; slot=slot->next)
{
//asign value here 
}
1 голос
/ 20 июля 2011

В цикле for вы присваиваете значения &bearer_slot, то есть адресу переменной bearer_slot, что недопустимо (это не lvalue) и не имеет смысла. Кроме того, вашим состоянием цикла является значение &bearer_slot, которое всегда будет иметь значение true (так как это указатель не NULL), поэтому ваш цикл будет работать вечно. Вам нужно будет предоставить больше контекста о том, что вы хотите сделать этот цикл. Кстати, (&x)->y можно записать более кратко как x.y - это сделает ваш код более читабельным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...