在撰写论文时,我需要使用clang Rewriter删除C ++文件中的IfStmt。
我使用clang及其AST因为我需要AST来找到正确的位置。对于删除,我使用if构造的getSourceRange
方法,然后使用重写器的相应方法将其删除。
但是在执行此操作后,我在更改的C ++文件中出现语法错误。
if看起来像:
if( someCondition )
#if SOMEOTHERCONDITION
doSth1();
#else
doSth2();
#endif
删除后,预处理器构造的if部分被删除,其余部分仍然存在。
有没有什么常用方法可以解决这个问题?