私のアプリケーションは、情報をログに記録するために標準出力以外の出力を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++ ですか? そうでない場合、これを機能させる方法はありますか?