C - pretypovani pointeru

Jan Kasprzak kas na fi.muni.cz
Pondělí Březen 14 12:23:32 CET 2005


moje wrote:
: void my_callback(void *arg)
: {
:                 int fd = ((int*)arg)[0];   /* 1 */
:                 close(fd);
: }
: 
: int main(int argc, char **argv) {
:         int fd = open("test",'r');
:         register_callback(my_callback, (void *)&fd); /* 2 */
: }
: 
	Ale tohle dela neco uplne jineho nez chci. Ja nechci do callbacku
predavat pointer na "fd" - ta promenna uz pak vubec nemusi existovat.
Ja fakt chci predavat jen to cislo. Coz muzu, protoze

sizeof(int) <= sizeof(void *)

(i kdyz ISO C99 to explicitne nezminuje, pokud dobre ctu; nevidel jsem
ale platformu, kde by tohle neplatilo).

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/   Czech Linux Homepage: http://www.linux.cz/ |
> Whatever the Java applications and desktop dances may lead to, Unix will <
> still be pushing the packets around for a quite a while.      --Rob Pike <


Další informace o konferenci Linux