使用用户将在错误中看到的唯一错误代码很方便。这将使开发人员更容易找到错误的根源(只需在源代码中搜索错误代码即可),从而节省时间。
例子:
void f()
{
std::cout << "UNIQUE001 " << "Error : The query failed" << std::endl;
}
void g()
{
f();
}
int main()
{
g();
return 0;
}
在示例中,用户报告错误(“UNIQUE001 错误:查询失败”)。开发人员只需对“UNIQUE001”进行项目范围的搜索,即可立即找到引发错误的位置。(带有行号的文件是不够的,因为同时代码可能已经更改)。
所以,对于这个问题:有没有办法在编译时(理想情况下,使用预处理器宏或 TMP)或运行时(例如在单元测试中)强制错误代码字符串的唯一性?
更新
到目前为止,我最好的尝试是创建一个带有宏的结构,它创建一个值字符串等于类型名称和错误代码的类型。这有效并为重复类型提供了编译时错误,但不能在任何地方声明结构(例如在表达式中)
#define generateerrorcode(code) \
struct code \
{ \
static const char* value = #code \
}; \
如果可能的话,我希望能够使用这样的唯一检查功能:
void some_function()
{
std::cout << check_unique("UNIQUE001") << "Error : The query failed" << std::endl;
}