Я использую clang, чтобы попробовать и проанализировать (с С++ API) некоторые С++ файлы и сделать все пары разломов case использующими определенный стиль.
Пример:
**Original**
switch(...)
{
case 1:
{
<code>
}break;
case 2:
{
<code>
break;
}
}
**After replacement**
switch(...)
{
case 1:
{
<code>
break;
}
case 2:
{
<code>
break;
}
}
То, что я до сих пор выполняю именно то, что хочу, если части кода не содержат макросов. Мой вопрос: делает ли clang treat расширенным (если я делаю дамп проблемного оператора, который покажет расширенную версию), макросы по-разному? если да, то как я могу заставить это работать?
Дополнительная информация, которая может помочь:
Я использую Rewriter:: ReplaceStmt, чтобы заменить подзапросы каждого случая вновь созданным CompoundStmt, и я заметил, что ReplaceStmt возвращает значение true, если параметр "from" содержит макрос и единственный способ вернуть этот метод true, если
Rewriter:: getRangeSize (from- > getSourceRange())
возвращает -1