On Sat, 8 Sep 2001 14:57:51 +0300
"Marius" <[EMAIL PROTECTED]> wrote the immortal words:

> 
> in prima versiune, NULL e un numar. in a doua, e
> un pointer (cum si tre' sa fie NULL)

> >
> > #define NULL 0
> >
> >   si
> >
> > #define NULL ((void *)0)
> >

Exista pe i386 vreo situatie in care  conversia intre un pointer si un
intreg sa nu se poata realiza? (implicit, nu explicit, ca explicit se
poate). In ambele sensuri? void*->int; int->void*
Sau, cunosti tu vre-un calculator pe care merge gcc si/sau linux si sa
nu se poata face o asemena conversie?
In alta ordine de ideei, fie sursa foo.cc
#include <stdio.h>
int a(int)
{
    printf("int\n");
}
int a(void *)
{
    printf("pointer\n");
}
main()
{
    a(0); 
    a(NULL); 
    a((void*)0); 
}

La gcc version 2.95.2 19991024 (release))
int
int (si 'warning: converting NULL to non-pointer type' la compilare)
pointer 

La gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
ala care vine cu RH6.2
int
pointer
pointer

Deci, intervine problema cu functiile supraincarcate, cand tipul lui NULL 
poate sa hotarasca ce functie trebuie sa fie apelata. La compilatorul meu,
se pare ca NULL este intreg, dar totusi, el realizeaza ceva in neregula
cu el. Celalat compilator stie ca NULL este pointer.
Nu stiu cum ar trebui sa faci tu, probabil nu conteaza foarte mult, 
presupunand ca programatorii normali nu lasa compilatorului astfel de
decizii.

-- 
                      The Marius
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to 
unsubscribe from this list.

Raspunde prin e-mail lui