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