如果使用clangs重写器删除ifStmt,当if仅包含一个语句时,如果使用构造

时间:2018-05-25 23:16:04

标签: c++ clang preprocessor

在撰写论文时,我需要使用clang Rewriter删除C ++文件中的IfStmt。

我使用clang及其AST因为我需要AST来找到正确的位置。对于删除,我使用if构造的getSourceRange方法,然后使用重写器的相应方法将其删除。

但是在执行此操作后,我在更改的C ++文件中出现语法错误。

if看起来像:

if( someCondition )
#if SOMEOTHERCONDITION
doSth1();
#else
doSth2();
#endif

删除后,预处理器构造的if部分被删除,其余部分仍然存在。

有没有什么常用方法可以解决这个问题?

0 个答案:

没有答案