Подтвердить что ты не робот

Можно ли просмотреть код С++ с помощью созданных шаблонов перед его компиляцией (g++)?

У компилятора g++ есть флаг, который создает макро-расширенный код (-E), поэтому мне интересно, есть ли способ просмотреть куде программы после создания экземпляра перед фактической компиляцией?

4b9b3361

Ответ 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);
}

enter image description here

Обычно вы должны видеть, как был создан экземпляр шаблона.

Примечание. Чтобы получить его, вам нужно пройти -ast-dump к интерфейсу clang.