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

Miguel Olave molavec en gmail.com
Vie Oct 8 09:10:01 CEST 2010


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.

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?

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);
}

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).

Miguel



On 08/10/10 01:50, Steven Davidson wrote:
> Hola Miguel,
>
> On 10/8/2010 1:41 AM, Miguel Olave wrote:
>> Esop!!
>>
>> He buscado pero no encuentro que hace esta notación:
>>
>> i ^= 1;
>>
>> hice un pequeño programa para ver si lo descubria pero no "me o
>> entender"
>>
>> #include <stdio.h>
>>
>> int main(){
>> int i=0, z=1, j;
>>
>> for(j=0;i<10;i++){
>> i ^= 1;
>> z ^= 1;
>> printf("i:%d, z:%d\n",i,z);
>> }
>> }
>> Resultado:
>> i:1, z:0
>> i:3, z:1
>> i:5, z:0
>> i:7, z:1
>> i:9, z:0
>>
>> Demás que alguien sabe y puede decirme en un par de líneas sin perder
>> mucho tiempo.
>>
>
> El operador ^= es el equivalente a hacer dos operaciones: ^ (XOR: OR 
> eXclusivo) y = (asignación). Para información acerca del operador ^, 
> consulta el capítulo 18 de nuestro curso de C++: 
> http://c.conclase.net/curso/index.php?cap=018#inicio
>
> Brevemente, este operador es a nivel de bits. Te doy la tabla de 
> verdad, pero con bits, para entender esta operación:
>
>  A | B | A ^ B
> ---+---+-------
>  0 | 0 |   0
>  1 | 0 |   1
>  0 | 1 |   1
>  1 | 1 |   0
>
> Si ambos bits son iguales, entonces el resultado es 0; de lo 
> contrario, es 1.
>
>
> Espero haber aclarado el asunto.
>
> 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/c0da63c6/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: apue.h
Type: text/x-chdr
Size: 4736 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101008/c0da63c6/attachment.bin>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: exitstatus.c
Type: text/x-csrc
Size: 853 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101008/c0da63c6/attachment-0001.bin>


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