__FUNCTION__ implemented with mixins and mangles

Sjoerd van Leent svanleent at gmail.com
Mon Jun 15 03:07:52 PDT 2009


zsxxsz Wrote:

> == Quote from Robert Fraser (fraserofthenight at gmail.com)'s article
> > Ary Borenszweig wrote:
> > > zsxxsz escribió:
> > >> == Quote from Jarrett Billingsley (jarrett.billingsley at gmail.com)'s
> > >> article
> > >>> On Sat, Jun 13, 2009 at 9:46 PM, zsxxsz<zhengshuxin at hexun.com> wrote:
> > >>>> It's good. But I think it should be implement by the DMD compiler,
> > >>>> just l
> > >>> ike
> > >>>> __FILE__  and __LINE__. __FUNCTION__ should be the base D language synt
> > >>> ax same as
> > >>>> __FILE__, __LINE__, in C99, they're all the compiler's things to get
> > >>>> thes
> > >>> e and the
> > >>>> compiler do these more easily than any library.
> > >>>>
> > >>> I completely agree, but Walter and Andrei's argument against it is -
> > >>> where does it end?  Do we need __PACKAGE__, __MODULE__, __TYPE__,
> > >>> __TEMPLATE__, etc. etc. etc.?  And I agree with them too - but you
> > >>> know, it'd be nice to actually get some results on these things once
> > >>> in a while instead of a bunch of bullshit bikeshed discussions.
> > >>> Sheesh.
> > >>
> > >> What is the main use of __FILE__, __LINE__ and __FUNCTION__? Many
> > >> people just use
> > >> them for logging easily, including me. In some famous server such as
> > >> Postfix, you
> > >> may see 'const char *myname = "xxx"; ... msg_info("%s: xxx", myname);'
> > >> in many
> > >> files, it's a time cost for the programmer to do so. These are base
> > >> requirments
> > >> for D compiler.
> > >
> > > I never had to use them in other languages. Why? Because debugging
> > > support in them is excelent. So maybe enhancing debugging support for D
> > > is better than adding a couple of keywords just to make *printf
> > > debugging* better.
> > __FILE__, __LINE__, __FUNCTION__, etc. are more often used for *logging*
> > than for debugging. Of course, ideally, the logger would be able to
> > identify all this stuff on its own (i.e. from a stack trace), but in a
> > compiled language this is pretty tricky (impossible on Windows without
> > debug symbols).
> 
> Yes, I agree with it.


Perhaps not the first thing to think off, but what about webservices for example? They could use such a system. Though it should be more elaborate than just the function name. If you could do this with all scopes, it would be trivial to expose them.



More information about the Digitalmars-d mailing list