C++ Academy
15.5K subscribers
864 photos
143 videos
1 file
769 links
По всем вопросам- @workakkk

РКН: clck.ru/3FmxJF

#VRHSZ
Download Telegram
💡 Clang умеет показывать AST, и это один из лучших способов реально понять, что компилятор видит в вашем C/C++ коде.

AST — это Abstract Syntax Tree, внутреннее представление программы после парсинга.

Например, простой код:


int x = a + b * 2;


для компилятора — не просто строка текста, а дерево примерно такого смысла:


VarDecl
└── BinaryOperator +
├── a
└── BinaryOperator *
├── b
└── 2


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

У Clang AST можно получить напрямую:


clang++ -Xclang -ast-dump -fsyntax-only main.cpp


А в Compiler Explorer / Godbolt есть отдельный режим просмотра AST, поэтому можно менять код и сразу видеть, как перестраивается дерево.

Особенно полезно разбирать так:

* шаблоны;
* перегрузку функций;
* implicit conversions;
* auto;
* лямбды;
* range-based for;
* временные объекты;
* разные формы инициализации.

Если регулярно смотреть AST, C++ постепенно перестаёт выглядеть как набор «магических правил».

Начинаешь видеть код примерно так, как его видит компилятор.

🔗 https://godbolt.org/z/cfc7h41bT

#Cpp #Clang #Compiler #Programming
👍19🔥8🥰42💯1