CodeLite 10.0.1 无法为迭代器自动完成

CodeLite 10.0.1 cannot autocomplete for iterators?

本文关键字:迭代器 CodeLite      更新时间:2023-10-16

我正在使用CodeLite 10.0.1在Ubuntu 16.04上编程C++11。

我的项目片段如下:

#include "llvm/Pass.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"
#include <map>
#include <string>
.............
    for (Function::iterator bb = F.begin(), e = F.end(); bb != e; ++bb) {
        bb-> // NO AUTOCOMPLETE SUGGESTIONS
        // assign integer ids to BasicBlock's
        if (bb->hasName()) {
            bbNameToId[bb->getName()] = bbId++; 
        } else {
            bb->setName(Twine(bbName + std::to_string(bbId)));
            bbNameToId[bb->getName()] = bbId++;
        }
        for (BasicBlock::iterator i = bb->begin(), e = bb->end(); i != e; ++i) {
            if(opCounter.find(i->getOpcodeName()) == opCounter.end()) {
                opCounter[i->getOpcodeName()] = 1;
            } else {
                opCounter[i->getOpcodeName()] += 1;
            }
        }
    }

现在,CodeLite 可以轻松地对上述代码中的F等函数进行自动完成建议。但是,没有关于bb->的建议,这是一个Function::iterator。此外,代码完成适用于C++标准库中声明的所有内容。

代码完成搜索路径设置如下:

/usr/include
/usr/include/c++/5
/usr/include/c++/5/backward
/usr/include/x86_64-linux-gnu
/usr/include/x86_64-linux-gnu/c++/5
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/local/include 

并且项目构建良好。我已经启用了 CTags 和 Clang 完成。

我该如何解决这个问题?

你应该在 CodeLite 中启用 clang 代码完成。寄件人: Settings->Code Completion->Clang->Enable clang code completion

接下来,运行: Workspace->Parse workspace - incremental