3

我有一个 c++ 文件,它更改并保留所有头文件保持不变。但是每当我重新解析一个翻译单元时,libclang 最终都会消耗大量的 cpu 和 ram。尽管它使用的是预编译头文件和所有文件(我可以看到生成的前导文件),但它仍然需要相当多的资源和时间。

这是我的代码片段。

translation_unit_ = clang_parseTranslationUnit(index_, 0, clang_argv[0],
    clang_argv.size() - 1, 0, 0,
    clang_defaultEditingTranslationUnitOptions()); 
// File name is in the arguments.


// Here I reparse again every time file changes.
clang_reparseTranslationUnit(translation_unit_, 0, 0,
    clang_defaultReparseOptions(translation_unit_));

// This is how I get diagnositics
CXDiagnostic diag = clang_getDiagnostic(translation_unit_, i);

谁能建议我正确设置以在单个更改的源文件中反复查找编译错误?

4

1 回答 1

1

clang_defaultEditingTranslationUnitOptions()在初始索引和clang_defaultReparseOptions()以后使用。尝试clang_defaultEditingTranslationUnitOptions()在这两个地方使用。

此外,不要期望重新解析源代码非常快 - 重新检查每一个更改都会导致任何非平凡源文件的性能下降。您可以在最后一次更改后等待几毫秒,看看是否可以将多个更改累积到一次重新解析中?

于 2012-04-29T20:00:35.717 回答