Если я сделаю:
int j = ({int x = 7; x+3;});
В i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (сборка Apple Inc., сборка 5646) gcc компилируется просто отлично. Рассматриваемый блок ({int x = 7; x+3;})
возвращает значение последнего оператора в качестве значения блока. Если вы удалите скобки, он не скомпилируется. Могу ли я ожидать, что это будет работать в большинстве компиляторов Си?
Кроме того, как называется эта конструкция? У меня было много проблем с поиском, потому что поисковые системы не индексируют ()
или {}
, а C - ужасный поисковый термин. Я также не смог найти ничего об этом ни в одной из своих книг, возможно, потому что я не знаю, что искать.