On Sun, 9 Sep 2001 17:59:42 +0300
"Marius" <[EMAIL PROTECTED]> wrote the immortal words:

> 
> Hm... daca vrei sa vorbesti de standard, nu te
> lega de gcc. Desi e cel mai standard existent, nu
> se comforma 100%. Citeste in schimb pe inet despre
> Standard C++ (aveam o adresa, n-o mai am).
> Despre NULL, prin definitie NULL e un pointer vid,
> adica ((void*)0). Cam asta-i tot.
> 
> Marius

> From: "Marius Ologesa" <[EMAIL PROTECTED]>
> 
> >
> > 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.

Nu stiu daca tu realizezi dar intrebarea era pusa concret pentru cazul
gcc-ului. Deci nu e chestiunea de standarde. (btw, stiu ca standard este
((void*)0)). Totusi, seria gcc-2.95.x este cunoscuta ca o serie stabila de
compilatoare, si preferata de multe chestii (kernel, mplayer din cate stiu
eu). Atunci, cum iti explici rezultatul obtinut? (cand el considera NULL
intreg, sau long..). Sa fie doar o scapare sau chiar asa eu intentionat
aia care au scris stdio.h?

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

Raspunde prin e-mail lui