Reference C++ coding standards book, etc., then disagree.
Macros are extremely useful for managing cross-cutting concerns.
Macros aren't evil, they are just powerful and can go spectacularly wrong. Great care needs to be taken when coding and testing macros.
Also, care needs to be taken when naming macros. SING is a macro in Clang that
prevented me from using this verb as an action in an enumerated list of actions.
Fortunately, the values of the enum class could be adjusted when I brought the
project over to Clang.