me he dado cuenta de que a veces, C macros se escriben como algo parecido a esto:Más información sobre `({});` en C?
#define foo(bar) ({ ++bar; })
Después de algunos experimentos, he encontrado que:
({});
compilará, pero no hacen nada. (Como se esperaba.)- Si deja
;
desactivado, se producirá un error de sintaxis. Un efecto secundario de esto es garantizar que foo() se parece a una función en su código. (Aunque, si deja el punto y coma apagado, ¡el error no es muy útil para diagnosticar el problema!) return ({});
se queja de un valor nulo no ignorado, como si hubiera intentado usar una función nula.
¿Esto es solo para que los desarrolladores agreguen un punto y coma a sus macros, o tiene otro propósito? Probé con Google, pero falla miserablemente con la puntuación. ¿Hay un nombre para esto?
Antigua - pero la sintaxis aún se admite en 4.4.2. –