Detectando expresiones constantes en C: Un enfoque basado en macros

2025-05-13

Este artículo explora varios métodos para crear una macro en C que verifica si una expresión es una constante en tiempo de compilación. El autor investiga enfoques usando `constexpr` y `typeof` de C23, extensiones de GNU como `__builtin_constant_p`, `static_assert` de C11 y trucos inteligentes con `sizeof` y literales compuestos. Cada método tiene sus ventajas y desventajas; algunos requieren estándares C más nuevos, dependen de extensiones del compilador o pueden alterar el tipo de la expresión o generar advertencias. El artículo concluye resumiendo los pros y los contras y expresando el deseo de soluciones más elegantes.

Leer más

Detectando Expresiones Constantes en C: Un Enfoque con Macros

2025-04-22

Este artículo explora varios métodos para crear una macro en C que detecta si una expresión es una expresión constante. El autor investiga varias técnicas, incluyendo literales compuestos estáticos de C23, la extensión GNU `__builtin_constant_p`, `static_assert`, `sizeof` combinado con arrays literales compuestos, `sizeof` con constantes enum y el operador coma. Cada método tiene sus pros y contras; el soporte de C23 es limitado, `__builtin_constant_p` depende de extensiones GNU, los métodos `static_assert` y `sizeof` pueden cambiar el tipo de la expresión, y el operador coma genera advertencias. El autor concluye que una solución perfecta es evasiva, y la mejor opción depende de las necesidades específicas y la versión del estándar C.

Leer más

Conquistando Advent of Code 2024 con BQN

2025-01-25

El autor participó en el desafío Advent of Code 2024 y eligió aprender el lenguaje de arrays BQN. El artículo detalla el proceso de aprendizaje, cubriendo la configuración, las experiencias con la documentación y las herramientas, y una introducción a las características de BQN, como sus operadores únicos, las manipulaciones de arrays y las definiciones de funciones. Se comparten varias soluciones de Advent of Code, mostrando las fortalezas de BQN en el manejo de arrays y problemas de cuadrícula, contrastando BQN con lenguajes imperativos. Aunque inicialmente desafiante, el autor finalmente considera a BQN un lenguaje divertido y poderoso, particularmente adecuado para resolver rompecabezas de programación.

Leer más
Desarrollo lenguaje de arrays