QT C++ redeclaration of 'xxxx' 错误

如题,在一次对代码升级的时候,突然就出现这个错误:

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
    }
}
发布了74 篇原创文章 · 获赞 127 · 访问量 91万+

猜你喜欢

转载自blog.csdn.net/AAA123524457/article/details/103143404