假设我有两个文件main.c和func.c func.c是从main.c的main函数调用的。通常,我会生成main.o和func.o,链接器会找到func的定义并将其绑定到main .c中的调用。
现在,我想通过libclang API做同样的事情。这是我正在制作的Doxygen类型代码浏览实用程序。我能够解析这两个文件。从这里开始,我不知道如何继续。 我应该生成* .o文件并将clang链接起来吗?
谢谢,我希望我能够清楚地提出问题
答案 0 :(得分:3)
不,不需要将代码实际编译为目标文件。
两个翻译单元中符号之间的链接可以使用USR(统一符号解析)建立。当您在翻译单元的AST中找到一个有趣的地方(由libclang中的CXCursor
表示)时,请调用clang_getCursorUSR()
以获取相关的USR。
如果两个CXCursor
具有相同的USR,即使在两个不同的翻译单元中,它们也与相同的符号相关联。