Em que versões de C é um bloco entre parênteses usado para retornar um valor válido?

Se eu fizer:

int j = ({int x = 7; x+3;});

Em i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (compilação Apple Inc. 5646) gcc compila muito bem. O bloco em questão({int x = 7; x+3;}) retorna o valor da última instrução como o valor do bloco. Se você remover o parêntese, ele não será compilado. Posso esperar que isso funcione na maioria dos compiladores C?

Além disso, qual é o nome dessa construção? Eu tive muita dificuldade em procurar por isso, porque os motores de busca não indexam() ou{} e C é um termo de pesquisa terrível. Eu também não consegui encontrar nada sobre isso em nenhum dos meus livros, provavelmente porque eu não sei o que procurar.

questionAnswers(3)

yourAnswerToTheQuestion