go to post Sean Connelly · Mar 24, 2017 Nice article Eduard. Re: last comment. Not sure how having to change the implementation of a Macro is any less of a pain than having to change hundreds of class method arguments. If anything Macro's are a great way to abstract application wide changes with a single line of code. Granted recompilation is required, but code that can't withstand recompilation all day long has a deeper problem. My only negative about Macro's is when you can't read the code for Macro soup, less is more for me. One tip to add. I like to have auto complete work for Macros. If you precede each macro with a triple comment, then they will appear in the auto complete suggestions... /// #define LogNone(%message) $$$LogEvent("NONE", %message) /// #define LogError(%message) $$$LogEvent("ERROR", %message) /// #define LogFatal(%message) $$$LogEvent("FATAL", %message)