Qué es Gulcas?
La lista de correo
Normas de uso
Fotos
Wiki
Hackit
Cosas de C
Enviado por arrase el Jue, 2006-03-30 23:39.
Hace un par de años, cansado de llenar mis practicas de printf's, decidi hacerme una libreria dinamica que me ayudara a trazar los valores de distintos tipos base con una sola linea.
La verdad es que me pase un buen rato escribiendola y hoy en clase han tirado a la basura mucho de ese trabajo con una simple macro. He aqui un ejemplo:
#define traza(t,x) printf(#x"="t" Linea=%d\n",x,__LINE__);
int main(){
int a=2;
traza("%d",a);
}
Y el resultado es:
$ ./macro a=2 Linea=7
Mi libreria incluia mas funcionalidades pero la verdad es que esto me ha dejado roto :).
En fin...por lo menos algo he aprendido.
- arrase's blog
- Inicie sesión o regístrese para enviar comentarios


Recoleccion de macros
Estoy recogiendo en mi repositorio Subversion todas estas macros que se han ido posteando.
Si teneis mas macros interesantes que querais incluir o veis que me he dejado algo importante hacedmelo saber
Saludos :)
Más y más cosas de C
Algo bastante útil para poder usar colores en tus programas es:
#define rojo(x) printf("\033[0;31m%s\033[0m", x) #define verde(x) printf("\033[0;32m%s\033[0m", x)Y luego metes:
rojo("texto rojo"); verde("texto verde");.. el resultado os lo podeis imaginar :)
En varios tonos :)
Con unas macros tipo:
Puedes meter varios colores en una frase, por ejemplo:
#include "colores.h" int main(){ printf(blue("hola")red(" mundo\n")); }Más cosas de C
Ese tipo de macros, son muy buenas para crear macros de trazas o logs, yo también las descubrí hace poco y la versión que puedo aportar es esta:
#define traza(t,x) printf(#x"="t" Linea=%d funcion=%s fichero=%s\n",x,__LINE__,__FUNCTION__,__FILE__); int main(){ int a=2; traza("%d",a); }Que nos da como resultado:
Bastante útil si el proyecto es grande y trabajamos con varias/os funciones/ficheros.
Por otro lado, algo que me sorprendio hace poco es el hecho de que una macro pudiera aceptar una lista de argumentos variable de la forma:
De esta forma, por ejemplo, b podría ser un format string y en args se encontraria la lista de sustituciones.