Macros are processed by a preprocessor that knows nothing about namespaces. Thus, macros are not replaced with names, it is just a replacement for text. The use of macros is really discouraged, among other reasons, because they always pollute the global namespace.
If you need to print a message, and you want it to be placed in the namespace, just use the built-in function. The code seems simple enough for a proper installation:
namespace a { inline void MESSAGE_A(const char* message) { std::cout << message << std::endl; } }
Storyteller
source share