É possível colocar uma macro em um namespace em c ++?
Meu aplicativo usa outra saída do que a saída padrão para registrar informações, e é por isso que eu escrevi meu próprioLog()
, Error()
, Panic()
eAssert()
funções. Para organizar as coisas bem, eu incluo todas as coisas de depuração em umDebug
namespace.
Faria mais sentido para oAssert()
função para também fornecer um arquivo de origem e um número de linha, que só é possível__LINE__
e__FILE__
macros. No entanto, é bastante desagradável, ineficiente, etc ... sempre ter que especificar esses dois parâmetros.
Então é assim que meu código ficaria:
namespace Debug {
void Assert (int condition, std::string message, std::string file, int line);
}
A minha pergunta é, é possível colocar uma macro que inclua esses dois parâmetros dentro doDebug
namespace? Como isso:
namespace Debug {
void Assert_ (int condition, std::string message, std::string file, int line);
#define Assert(a,b) Assert_(a, b, __FILE__, __LINE__)
}
// .... Somewhere where I call the function ....
Debug::Assert (some_condition, "Some_condition should be true");
// Output: Assertion failed on line 10 in file test.cpp:
// Some_condition should be true
Isto é válido em c ++? Se não, existe alguma maneira de fazer isso funcionar?