[C con Clase] Para que sirve esta notación?? ^= y algunas mas

Miguel Olave molavec en gmail.com
Vie Oct 8 15:51:40 CEST 2010


Por qu'e resulta tan fácil cuando te explican. Parecen hasta tontas las
preguntas. Muchas gracias Steven me ahorraste horas de búsqueda.

2010/10/8 Steven Davidson <srd4121 en njit.edu>

> Hola Miguel,
>
>
> On 10/8/2010 3:10 AM, Miguel Olave wrote:
>
>> Muchas gracias Steven, como siempre ayudando al necesitado, sabía que
>> ese operador en algún momento lo había tenido que ocupar pero no me
>> acordaba para que servía.
>>
>>
> De nada; para eso estoy :)
>
>
>  Estoy revisando un código que sirve para recuperar el estatus de
>> termino de hilos y aparecen otras notaciones que desconozco:
>>
>> 1.- Esto aparece en una librería .h. ¿Para que son los puntos
>> suspensivos?
>>
>>
> Es la forma de indicar a C/C++ que la función acepta una cantidad variable
> de argumentos. Por ejemplo, 'printf()' y 'scanf()' funcionan de esta manera.
> Lo más seguro es que estas funciones funcionan (valga la redundancia)
> similarmente a las anteriores. Pasas una cadena que representa un formato
> para indicar a la función cuántos parámetros posteriores vas a pasar y cómo
> deben ser interpretados.
>
> Para más información acerca de la creación de este tipo de funciones,
> consulta el capítulo 20:
> http://c.conclase.net/curso/index.php?cap=020b#PAR_VARIABLES
>
>
>  void err_dump(const char *, ...); /* {App misc_source} */
>> void err_msg(const char *, ...);
>> void err_quit(const char *, ...);
>> void err_exit(int, const char *, ...);
>> void err_ret(const char *, ...);
>> void err_sys(const char *, ...);
>>
>> void log_msg(const char *, ...); /* {App misc_source} */
>> void log_open(const char *, int, int);
>> void log_quit(const char *, ...);
>> void log_ret(const char *, ...);
>> void log_sys(const char *, ...);
>>
>> 2.- Lo otro es que aparece el siguiente código que no se me hubiese
>> ocurrido posible. Retornar en una función void de esta forma, :
>>
>> void *
>> thr_fn1(void *arg)
>> {
>> printf("thread 1 returning\n");
>> return((void *)1);
>> }
>>
>>
> Puedes retornar lo que quieras, todo depende de la interpretación que
> apliques.
>
>
>  El asunto es que esa función es ocupada para analizar el el retorno de
>> una hebra
>> err = pthread_create(&tid1, NULL, thr_fn1, NULL);
>> if (err != 0)
>> err_quit("can't create thread 1: %s\n", strerror(err));
>> err = pthread_join(tid1, &tret);
>> if (err != 0)
>> err_quit("can't join with thread 1: %s\n", strerror(err));
>>
>> En este punto pthread_join puede manejar ese tipo de retornos??
>>
>> Lo pregunto porque no he podido compilar los archivos debido a que me
>> lanza el siguiente error:
>>
>> carlos$ *cc exitstatus.c -l pthread -o exitstatus*
>> /tmp/ccQGYKoy.o: In function `main':
>> exitstatus.c:(.text+0x87): undefined reference to `err_quit'
>> exitstatus.c:(.text+0xd2): undefined reference to `err_quit'
>> exitstatus.c:(.text+0x10d): undefined reference to `err_quit'
>> exitstatus.c:(.text+0x15f): undefined reference to `err_quit'
>> collect2: ld returned 1 exit status
>>
>> Si alguien pudiese jugar y compilarlos y pillar el error lo
>> agradecería nuevamente, adjunto los archivos. En caso contrario no
>> hay problema, creo que sobreviviré al certamen de mañana (o eso
>> espero).
>>
>>
> Tienes errores de enlazado. Esto significa que no has enlazado la
> biblioteca requerida que contiene las implementaciones de 'err_quit()'.
>
>
> Espero que todo esto te ayude.
>
>
> Steven
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101008/9a687a64/attachment.html>


Más información sobre la lista de distribución Cconclase