我的应用程序使用标准输出之外的另一个输出来记录信息,这就是我编写自己的、 和Log()
函数Error()
的原因。为了很好地组织事情,我将所有调试内容都包含在一个命名空间中。Panic()
Assert()
Debug
该函数还提供源文件和行号会更有意义Assert()
,这只能使用__LINE__
and__FILE__
宏。然而,总是必须指定这两个参数是非常不愉快、低效的等等。
所以这就是我的代码的样子:
namespace Debug {
void Assert (int condition, std::string message, std::string file, int line);
}
我的问题是,是否可以在命名空间内放置一个包含这两个参数的宏Debug
?像这样:
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++ 吗?如果没有,有没有办法使这项工作?