如题,在一次对代码升级的时候,突然就出现这个错误:
error: redeclaration of ‘xxxx’
^
由于这个错误报错时,直接跳到声明处,很难看到实质是由哪个文件引起的bug;网上查了一堆资料都无解。后来经过大量排查后发现是修改代码时粗心造成的一个bug:
代码示意:
void function1()
{
LOCK(file1);
// step1: do sth
LOCK(file2);
// step2: do sth
}
现在看到这段代码就知道错误所在了,在同一个函数里同时使用了两次LOCK(LOCK是我封装的一个宏线程锁),这就导致了这个错误。改正方法很简单,就是给每个锁设定固定的逻辑有效范围块。
代码示意:
void function1()
{
{
LOCK(file1);
// step1: do sth
}
{
LOCK(file2);
// step2: do sth
}
}