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