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