full path to source file __FILE__

Steven Schveighoffer schveiguy at yahoo.com
Tue May 29 21:45:15 UTC 2018


On 5/29/18 5:34 PM, DigitalDesigns wrote:
> On Wednesday, 27 July 2016 at 13:58:22 UTC, Jonathan Marler wrote:
>> On Thursday, 21 July 2016 at 19:54:34 UTC, Jonathan Marler wrote:
>>> Is there a way to get the full path of the current source file? 
>>> Something like:
>>>
>>> __FILE_FULL_PATH__
>>>
>>> I'm asking because I'm rewriting a batch script in D, meant to be ran 
>>> with rdmd.  However, the script needs to know it's own path.  The 
>>> original batch script uses the %~dp0 variable for this, but I'm at a 
>>> loss on how to do this in D.  Since rdmd compiles the executable to 
>>> the %TEMP% directory, thisExePath won't work.
>>>
>>> BATCH
>>> -----
>>> echo "Directory of this script is " %~dp0
>>>
>>>
>>> DLANG
>>> -----
>>> import std.stdio;
>>> int main(string[] args) {
>>>     writeln("Directory of this script is ", ???);
>>> }
>>
>> For others who may see this thread, the __FULL_FILE_PATH__ special 
>> trait was added to the dmd compiler with this PR: 
>> https://github.com/dlang/dmd/pull/5959
>>
>> At the time of this post, the latest released version of D is 2.071.1, 
>> so this trait should be available on any release after that.
> 
> Except it doesn't?
> 
> auto x(string fp = __FULL_FILE_PATH__)()
> {
>     pragma(msg, fp);
> }
> 
> ?

__FILE_FULL_PATH__, not __FULL_FILE_PATH__ (yes, it was wrong in the 
post you quoted).

In addition, you must instantiate the template:

void main()
{
     x();
}

-Steve


More information about the Digitalmars-d-learn mailing list