Hola, Cristian;
Cristian Desplats escribió:
Hola a todos: tengo la siguiente duda, encontre en internet la siguiente
macro "#define sqrt(x) (assert((x) >= 0.0), sqrt(x))" a primera vista
parece que es una macro recursiva, el unico efecto que tiene es cuando
le paso por parametro un valor menor que 0. ¿Esta macro puede ser
considerada como tal? Alguien tiene alguna documentacion sobre macros
recursivas.
No, no es una macro recursiva; la macro se reemplaza una única vez.
Es simplemente un reemplazo de la función sqrt() que dice que primero
se chequee que el valor sea positivo antes de llamar a la función:
[EMAIL PROTECTED]:~$ cat test.c
#include <stdio.h>
void foo(void)
{
printf("function foo\n");
}
#define foo() (printf("macro foo\n"), foo())
int main(void)
{
foo();
return 0;
}
[EMAIL PROTECTED]:~$ ./test
macro foo
function foo
[EMAIL PROTECTED]:~$
Saludos;
Sebastián Santisi
[EMAIL PROTECTED]
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion