Во время написания моей диссертации мне нужно было удалить IfStmt в файле C ++ с помощью clang Rewriter.
Я использую clang и его AST, потому что мне нужен AST, чтобы найти правильное местоположение.Для удаления я использую метод getSourceRange
конструкции if, а затем удаляю его соответствующим методом Rewriter.
Но после этого я получил синтаксическую ошибку в измененном файле C ++.
if выглядит следующим образом:
if( someCondition )
#if SOMEOTHERCONDITION
doSth1();
#else
doSth2();
#endif
После удаления была удалена часть if конструкции препроцессора, а остальная часть осталась.
Есть ли какой-либо общий способбороться с такой проблемой?