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.