arduino

Diferencia entre #define y const en Arduino

Introducción

Las constantes; como sabemos, no cambian su valor en tiempo de ejecución. Son útiles para prevenir que nosotros mismos tengamos errores.

En el lenguaje de Arduino, que no es otra cosa que C y C++, podemos declarar constantes usando #define y también const. Cada una de ellas tiene su explicación.

#define

Es un macro que se ejecuta antes de la compilación. Para explicarlo de la manera más sencilla, supongamos que definimos lo siguiente:

#define NUMERO 1

void setup(){
  pinMode(NUMERO, OUTPUT);
  digitalWrite(NUMERO, HIGH);
}

Antes de que el código sea compilado, se hará un buscar y remplazar, en donde las ocurrencias serán (valga la redundancia) remplazadas por el valor verdadero. Por lo que (no podemos verlo, pero así es), el programa de arriba se convertiría en lo siguiente:

void setup(){
  pinMode(1, OUTPUT);
  digitalWrite(1, HIGH);
}

Es decir, remplazó las constantes por el valor verdadero.

Ventajas

  • No ocupa memoria para almacenar las constantes, puesto que son remplazadas por sus valores
  • Si vamos a usarlo para cosas pequeñas, como definir un pin, una cadena, etcétera, nos viene genial

Desventajas

  • No tienen tipo. Por lo que el compilador no podrá avisarnos si algo estamos haciendo mal
  • Son globales, por lo que debemos ser sumamente cuidadosos al referirnos a ellas

 

Const

Para declarar una constante, usamos const seguido del tipo de la variable. Por ejemplo:

const int numero = 1;

Al compilar, esto no se remplaza. Queda así como está. Y si el compilador detecta que en algún momento de nuestro código queremos asignarle un nuevo valor nos arrojará un valor.

Ventajas

Obedecen el ámbito de las funciones. Es decir, podemos declarar dos constantes con el mismo nombre en diferentes funciones:

void funcionUno(){
  const int edad = 18;
}

void otraFuncion(){
  const int edad = 50;
}

Y podemos usarlas dentro de cada función sin que choquen. También tiene la ventaja de que tiene tipo, por lo que el compilador nos informará los errores que puede que estemos cometiendo.

const también permite declarar arreglos, cosa que #define no.

Finalmente, cabe mencionar que el uso de const es recomendado en lugar de #define según este artículo.

Conclusión

Personalmente utilizo #define porque no trabajo en proyectos grandes, y las librerías que incluyo no colisionan con el nombre de mis constantes.

Sin embargo, es una buena práctica usar const en lugar de #define según el sitio oficial de Arduino. Y si ellos lo dicen, es porque así debería ser. Además, en la mayoría de casos tenemos memoria de sobra para los proyectos que hacemos, por lo que no tenemos que ahorrarla usando #define.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

3 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

4 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

3 semanas hace

Esta web usa cookies.