On Tuesday, 7 March 2023 at 22:11:49 UTC, rempas wrote:
> For example, in the given code:
void my_function() {
import std.stdio;
writeln("The name of the function is: ", <fn_name_macro_or_something>);
}
Is there something to put in the place of <fn_name_macro_or_something>
to get the name of the function?
import std.stdio;
void main()
{
writeln("file: ", __FILE__);
writeln("function is: ", __FUNCTION__);
writeln("function is: ", __PRETTY_FUNCTION__ );
}
$ dmd -run tester.d
file: tester.d
function is: tester.main
function is: void tester.main()
You can even get the calling function name:
import std.stdio;
void main()
{
log("hello");
}
void log(string msg, string file = __FILE__, int line = __LINE__, string fn = __PRETTY_FUNCTION__)
{
writeln(file,":",line,"|", fn,"|> ", msg);
}
https://dlang.org/spec/expression.html#specialkeywords