Macros en C y uso de argumentos entre paréntesis

Resuelto rubixibuc asked hace 13 años • 2 respuestas

Ejemplo

#define Echo(a)  a
#define Echo(a) (a)

Me doy cuenta de que probablemente no haya una diferencia significativa aquí, pero ¿por qué querrías incluir el aparéntesis dentro del cuerpo de la macro? ¿Cómo lo altera?

rubixibuc avatar Aug 25 '11 14:08 rubixibuc
Aceptado

Supongamos que tienes

#define mul(x, y)  x * y

¿Qué pasa si digo:

mul(a + 5, 6); /* a + 5 * 6 */

Ahora si cambio ligeramente la macro:

#define mul(x, y)  ((x) * (y))
mul(a + 5, 6); /* ((a + 5) * (6)) */

Recuerde, los argumentos no se evalúan ni nada, solo se realiza la sustitución textual.

EDITAR

Para obtener una explicación sobre cómo tener la macro completa entre paréntesis, consulte el enlace publicado por Nate CK .

cnicutar avatar Aug 25 '2011 07:08 cnicutar