AD

¿Ya dominas lo básico? Un curso estructurado de C es la vía rápida para dar el salto.

Ver cursos de C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🔧Lecciones de C
Lección 51 / 68

Escribir lógica independiente del tipo con macros

En esta lección escribirás algo que funcione con varios tipos, algo que C no permite de forma directa.

El preprocesador sustituye texto antes de compilar, así que una macro con parámetros sirve para cualquier tipo: #define MAX(a, b) ((a) > (b) ? (a) : (b)).

El código de ejemplo usa una macro con enteros y con decimales.

Fíjate en los paréntesis: van alrededor de cada parámetro y de toda la expresión. Sin ellos, MAX(1+2, 3) se expande mal y da un resultado incorrecto. Es la regla número uno de las macros con parámetros.

Y el peligro serio: los argumentos se evalúan más de una vez. MAX(i++, j) incrementa i dos veces. Como no es una función, no hay forma de evitarlo. Por eso en C moderno se prefiere _Generic (C11) o funciones separadas, y las macros se reservan para lo que no se puede hacer de otro modo.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)