[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