私のアプリケーションは、情報をログに記録するために標準出力以外の出力をLog()
使用Error()
しPanic()
ますAssert()
。うまく整理するために、すべてのデバッグ要素をDebug
名前空間で囲みます。
Assert()
関数がソース ファイルと行番号も提供する方が理にかなっていますが、これは__LINE__
および__FILE__
マクロを使用する場合にのみ可能です。ただし、常にこれら 2 つのパラメーターを指定する必要があるのは、非常に不愉快で非効率的です。
だから、これは私のコードがどのように見えるかです:
namespace Debug {
void Assert (int condition, std::string message, std::string file, int line);
}
Debug
私の質問は、名前空間内にこれら 2 つのパラメーターを含むマクロを配置することは可能ですか? このような:
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
これは有効な c++ ですか? そうでない場合、これを機能させる方法はありますか?