Ist es möglich, ein Makro in einem Namespace in C ++ zu platzieren?
Meine Anwendung verwendet eine andere Ausgabe als die Standardausgabe für die Protokollierung von Informationen, weshalb ich meine eigene geschrieben habeLog()
, Error()
, Panic()
undAssert()
funktionen. Um die Dinge gut zu organisieren, füge ich das gesamte Debugging-Material in einDebug
Namespace.
Es wäre sinnvoller für dieAssert()
Funktion, um auch eine Quelldatei und eine Zeilennummer anzugeben, die nur mit der Taste möglich ist__LINE__
und__FILE__
Makros. Es ist jedoch ziemlich unangenehm, ineffizient usw., diese beiden Parameter immer angeben zu müssen.
So würde mein Code also aussehen:
namespace Debug {
void Assert (int condition, std::string message, std::string file, int line);
}
Meine Frage ist, ist es möglich, ein Makro zu platzieren, das diese beiden Parameter enthältDebug
Namespace? So was:
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
Ist das gültiges c ++? Wenn nicht, gibt es eine Möglichkeit, dies zum Laufen zu bringen?