Libclang API用于获取在不同文件中定义的函数定义

时间:2013-08-03 21:34:06

标签: c compiler-construction clang llvm libclang

假设我有两个文件main.c和func.c func.c是从main.c的main函数调用的。通常,我会生成main.o和func.o,链接器会找到func的定义并将其绑定到main .c中的调用。

现在,我想通过libclang API做同样的事情。这是我正在制作的Doxygen类型代码浏览实用程序。我能够解析这两个文件。从这里开始,我不知道如何继续。 我应该生成* .o文件并将clang链接起来吗?

谢谢,我希望我能够清楚地提出问题

1 个答案:

答案 0 :(得分:3)

不,不需要将代码实际编译为目标文件。

两个翻译单元中符号之间的链接可以使用USR(统一符号解析)建立。当您在翻译单元的AST中找到一个有趣的地方(由libclang中的CXCursor表示)时,请调用clang_getCursorUSR()以获取相关的USR。

如果两个CXCursor具有相同的USR,即使在两个不同的翻译单元中,它们也与相同的符号相关联。