Module name compile time constant?
Simen Kjaeraas
simen.kjaras at gmail.com
Tue Apr 15 16:25:24 PDT 2008
On Tue, 15 Apr 2008 17:56:32 +0200, Spacen Jasset
<spacenjasset at yahoo.co.uk> wrote:
> davidl wrote:
>> 在 Tue, 15 Apr 2008 15:12:13 +0800,Janice Caron
>> <caron800 at googlemail.com> 写道:
>>
>>> On 15/04/2008, davidl <davidl at 126.com> wrote:
>>>> I want some magic of module.name to get the current module name in
>>>> compile
>>>> time string form.
>>>
>>> Yeah, basically you want to add __MODULE__ to the list of "special
>>> tokens" in
>>> http://digitalmars.com/d/2.0/lex.html
>>>
>>> I think it would be easy for Walter to add, and I don't think it's
>>> particularly controversial, so why not just go ahead and add an
>>> enhancement request to Bugzilla.
>> I'm looking for a cleaner solution.
>> __SPEC_TOKEN__ for me looks like a hack.
>> and it's not so well defined if my app doesn't have a module
>> declaration section?
>> should the compiler stop the compilation?
>>
> __MODULE__ seems reasonable to me. It's in line with __FILE__ and
> __LINE__ and __FUNC__ (which seems absent, from dmd 1 anyway)
>
> If you have no module definition, then presumably it could be "" or
> whatever module the compiler considers it is when that happens according
> to the current rules.
>
> They look a bit like C preprocessor type macros, but really they aren't
> so much, at any rate there is none of the problems you get with C style
> macros and so they don't seem like a hack to me.
>
> What alternative did you have in mind?
One could argue that a more D-style way to do it would be along the lines
of preprocessor.line, preprocessor.file, and so on. It looks less like a
hack and more like a real part of the language. One could possibly add
other things to this preprocessor object as well, for instance a list of
version statements, and I'm sure there are other ideas floating around.
-- Simen
More information about the Digitalmars-d
mailing list