НКУ дает мне неверную именующее выражение в ошибки присваивания для:gcc confused о том, что такое lvalue?
-2[(size_t *)new] = 0;
Изменение кода к следующему делает его уйти:
((size_t *)new)[-2] = 0;
, но, насколько я могу судить, как это 100% эквивалент в C. gcc не имеет проблемы с использованием первого в выражениях, отличных от lvalue. Это просто ошибка в gcc? Я протестировал его с несколькими версиями и получил те же результаты.
каждый раз, когда я думаю, что знаю C, я вижу такие вещи и иду «wtf?» – 2010-12-07 15:42:35
Я знал, что можно получить доступ к таким массивам, но я никогда не знал, что кто-то действительно делает это так ... – musiKk 2010-12-07 15:47:36