digitalmars.D.learn - Getting the source text of an expression
- Dave P. (20/20) Dec 17 2020 In C, you can use a macro to get the source text of an expression
- FreeSlave (13/33) Dec 17 2020 Something like that?
- Dave P. (3/17) Dec 17 2020 Very cool! Where can I read about what an alias as a template
- Mike Parker (3/5) Dec 17 2020 https://dlang.org/spec/template.html#aliasparameters
- mw (2/22) Dec 17 2020 https://code.dlang.org/packages/jdiutil
In C, you can use a macro to get the source text of an expression as a string. For example #include <stdio.h> #define PRINT_INT(x) printf(#x " = %d\n", x) int main(){ // prints "3 = 3" PRINT_INT(3); int x = 4; // prints "x = 4" PRINT_INT(x); #define FOO 5 // prints "FOO = 5" PRINT_INT(FOO); #define BAR FOO // prints "BAR = 5" PRINT_INT(BAR); return 0; } Is there a feature of D that allows you to achieve a similar goal? I’ve used this in the past for logging for example.
Dec 17 2020
On Thursday, 17 December 2020 at 19:45:38 UTC, Dave P. wrote:In C, you can use a macro to get the source text of an expression as a string. For example #include <stdio.h> #define PRINT_INT(x) printf(#x " = %d\n", x) int main(){ // prints "3 = 3" PRINT_INT(3); int x = 4; // prints "x = 4" PRINT_INT(x); #define FOO 5 // prints "FOO = 5" PRINT_INT(FOO); #define BAR FOO // prints "BAR = 5" PRINT_INT(BAR); return 0; } Is there a feature of D that allows you to achieve a similar goal? I’ve used this in the past for logging for example.Something like that? import std.stdio; void print_int(alias n)() { writeln(n.stringof~"=", n); } void main() { int x = 42; print_int!(x); print_int!(7); }
Dec 17 2020
On Thursday, 17 December 2020 at 21:24:40 UTC, FreeSlave wrote:On Thursday, 17 December 2020 at 19:45:38 UTC, Dave P. wrote:Very cool! Where can I read about what an alias as a template parameter does?[...]Something like that? import std.stdio; void print_int(alias n)() { writeln(n.stringof~"=", n); } void main() { int x = 42; print_int!(x); print_int!(7); }
Dec 17 2020
On Thursday, 17 December 2020 at 21:40:09 UTC, Dave P. wrote:Very cool! Where can I read about what an alias as a template parameter does?https://dlang.org/spec/template.html#aliasparameters https://github.com/PhilippeSigaud/D-templates-tutorial
Dec 17 2020
On Thursday, 17 December 2020 at 19:45:38 UTC, Dave P. wrote:In C, you can use a macro to get the source text of an expression as a string. For example #include <stdio.h> #define PRINT_INT(x) printf(#x " = %d\n", x) int main(){ // prints "3 = 3" PRINT_INT(3); int x = 4; // prints "x = 4" PRINT_INT(x); #define FOO 5 // prints "FOO = 5" PRINT_INT(FOO); #define BAR FOO // prints "BAR = 5" PRINT_INT(BAR); return 0; } Is there a feature of D that allows you to achieve a similar goal? I’ve used this in the past for logging for example.https://code.dlang.org/packages/jdiutil
Dec 17 2020