Ho riscontrato un problema con l'utilizzo di macro negli spazi dei nomi. Il codice èMacro e spazi dei nomi C++
#include <iostream>
namespace a
{
#define MESSAGE_A(message) \
std::cout << (message) << std::endl;
}
#define MESSAGE_A(message) \
std::cout << (message) << std::endl;
int main()
{
//works fine
MESSAGE_A("Test");
//invalid
a::MESSAGE_A("Test")
return 0;
}
Qual è la corretta variante di utilizzo di oggetti namespace nelle macro.
Può essere utile una soluzione alternativa. Nel mio progetto devo usare macro nello spazio dei nomi e devono chiamare macro da un altro spazio dei nomi. – shadeglare
@MaxFX, le macro non sono "chiamate", sono sostituite. Se hai bisogno di usare macro per qualcosa di troppo complesso, stai facendo qualcosa di sbagliato. – StoryTeller