C Programación de multiplicación de macros [duplicado]
Posible duplicado:
C Macros y uso de argumentos entre paréntesis.
He encontrado esta pregunta macro para ser muy interesante.
Si este código siguiente se define como una macro
#define MULT(x, y) x * y
Y la llamada a la función se realiza comoint z = MULT(3 + 2, 4 + 2);
. La salida deseada es 3 + 2 = 5 y 4 + 2 = 6 y 5 * 6 para ser 30.
Pero la salida devuelta fue 13. Lo toma como 3 + 2 * 4 + 2. Por lo tanto, de acuerdo con la prioridad de los operadores, evalúa primero 2 * 4.
¿Cuál es la solución aquí? ¿En caso de funciones más pequeñas como éstas, cuál es eficiente? ¿Definiendo la función o utilizando las macros?