GCC не понимает, что такое lvalue? - PullRequest
2 голосов
/ 07 декабря 2010

gcc дает мне недопустимое значение lvalue в ошибках присваивания для:

-2[(size_t *)new] = 0;

Если изменить код на следующий, он исчезнет:

((size_t *)new)[-2] = 0;

но насколько я могу судить, оба на 100% эквивалентны в C. gcc не имеет проблем с использованием первого в ненулевых выражениях.Это просто ошибка в gcc?Я протестировал его с несколькими версиями и получил те же результаты.

1 Ответ

7 голосов
/ 07 декабря 2010

Я тупой.[] связывается более тесно, чем -, поэтому это выражение фактически читает индекс 2 и отрицает его.

...