Ответ 1
Хорошо, чем ближе вы сможете прочитать AST/ABT, сгенерированный компилятором:
- AST: Аннотация Синтаксическое дерево
- ABT: Абстрактное дерево привязки
Первый представляет представление синтаксиса, когда компилятор его понимает, а второй аналогичен после разрешения привязок (т.е. что a
здесь фактически является переменной, которая была объявлена 3 строками раньше или что foo
correspdonds для функции, определенной в этом заголовке...).
Clang позволяет сбросить свой AST... который фактически является ABT, на самом деле, он улучшается в этот самый момент; Предварительный просмотр предварительного просмотра sneak:
int Test __attribute__((visibility("default")));
int main(int argc, char** argv) {
int x __attribute__((aligned(4))) = 5;
int y = 2;
for (;;)
if (x != y++)
break;
return (x * y);
}
Обычно вы должны видеть, как был создан экземпляр шаблона.
Примечание. Чтобы получить его, вам нужно пройти -ast-dump
к интерфейсу clang.