¿Cuál es el propósito de “(void) ({CODE})” en c?

En una pieza generada de código c encontré algo como esto (editado):

#include  int main() { (void) ( { int i = 1; int y = 2; printf("%d %d\n", i,y); } ); return 0; } 

Creo que nunca he visto el constructo (void) ( { CODE } ) antes, ni soy capaz de averiguar cuál podría ser el propósito.

Entonces, ¿qué hace esta construcción?

({ }) es una extensión de gcc llamada expresión de statement .

http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html

Una expresión de statement produce un valor y la (void) probablemente esté aquí para eliminar la advertencia del comstackdor o para hacer explícito que el valor de la expresión de la statement no se usa.

Ahora (void) ({ }) es lo mismo que una simple statement compuesta {} y no tiene sentido usarla.

Una aplicación de ({ }) es la capacidad de reemplazar expresiones con bloques de código. De esta manera se pueden incrustar macros muy complejas en las expresiones.

 #define myfunc() { } // can be a typical way to automatize coding. eg myfunc(x,y,z); myfunc(y,x,z); myfunc(x,z,y); // would work to eg. unroll a loop int a = myfunc()*123; // but this wouldn't work 

En lugar

 #define myfunc(a,b,c) ({printf(a#b#c);}) int a= myfunc(a,b,c) * 3; // would be legal