Alternative to C++ macro in D
Alexandru Ermicioi
alexandru.ermicioi at gmail.com
Sun Nov 3 17:26:17 UTC 2019
On Sunday, 3 November 2019 at 16:55:36 UTC, Vinod K Chandran
wrote:
> Hi all,
> I can do this in C++.
> #include <iostream>
> using namespace std ;
>
> #define end };
> #define log(x) cout << x << endl
> #define wait std::cin.get()
>
>
> int main() {
> log("Trying to avoid the visual clutter aused by closing
> curly braces") ;
> string myStr = "Now, code looks more elegant" ;
> log(myStr) ;
> wait ;
> end
> How can i do this in D ? Especially the " #define end }; ".
> I've tried " alias end = } " but didn't worked.
> Edit : How can add syntax highlighting and coloring in code
> posted on this comment ?
If this is about logging functionality, check
std.experimental.log package, it contains all necessary logging
functionality.
About macros there aren't any similar to preprocessor macros in
c/c++, however you can replace them with three options depending
on your needs:
1. Just a simple function in conjunction eith ctfe:
https://tour.dlang.org/tour/en/gems/compile-time-function-evaluation-ctfe
2. string mixins: https://dlang.org/articles/mixin.html
3. template mixins: https://dlang.org/spec/template-mixin.html
I'd say number 2 should be suitable for your example given you'd
like to inject statements into body of some function.
Best regards,
Alexandru.
More information about the Digitalmars-d-learn
mailing list