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?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage