我正在尝试了解如何使用 libclang 完成代码。我看过“Thinking beyond the compiler”,也看过 c-index-test,我在这里找到了一个简单的示例程序
我编译了该程序并在这个示例文件上运行它,我将它制作成类似于视频中的那个:
struct List {
int Data;
struct List *Next;
};
int sumListNode(struct List *Node) {
int result = 0;
for (; Node; Node = Node->Next)
result = result + Node->
}
void test() {
sumLi
}
如果我将程序指向 Node-> 之后的第一个不完整空间,它会吐出一些 C 关键字,但不会像视频所说的那样吐出 Next 或 Data。
如果我将它指向 sumLi 之后的空格,它会打印出相同的 C 关键字。如果我将 sumListNode 指向 sumLi 中具有“s”的列,我可以让它打印出 sumListNode,但即便如此,它也会将其分配为与其他关键字相同的优先级值,所以它实际上只是打印出我的所有内容可以放在那里而不是阅读光标下的内容并尝试做出明智的猜测。我只是抓住稻草,希望将光标放在片段的开头而不是结尾会有所帮助。
我已经学到了很多关于 libclang 可以给我的数据类型以及如何从 doxygen 以及在 c-index-test 中进行操作的知识,但我只是还没有学会如何让它给我相关数据,以便我可以处理一些事情。