Kompilator tak naprawdę nie wykonuje żadnego rozszerzenia makra. To jest zadanie pre-procesora. Wszystko to pojawia się jako jeden krok, ale kompilator faktycznie przekazuje oddzielne zadania przed procesorem i przechwytuje dane wyjściowe.
Szablony nie są "rozszerzane" podczas kompilacji. Są one tworzone przy użyciu podczas kompilacji. Różnica polega na tym, że kompilator natychmiast generuje kod obiektowy dla szablonu; nie ma pośredniego kodu źródłowego, który wychodzi. Nie można patrzeć na utworzony kod szablonu jako źródło, jest on odrzucany jako zespół, gdy jest potrzebny.
Jeśli masz GCC, możesz również wywołać procesor bezpośrednio bezpośrednio, używając "cpp" z właściwymi argumentami (najczęściej zawierają ścieżki i definicje makr linii poleceń). Inni odpowiedzieli na MSVC.
Należy zauważyć, że pytanie dotyczy również rozszerzenia szablonu, a wybrana odpowiedź nie odpowiada na to pytanie. – TripShock
[Pokrewne pytanie] (http://stackoverflow.com/questions/5193867) ma bardziej przydatną (choć zależną od GCC) odpowiedź. Aby uzyskać bardziej zaawansowany kod języka C++ niż RTL, użyj rodziny opcji '-fdump-tree -... 'jak' -fdump-tree-gimple' zamiast '-fdump-rtl -...' w tej odpowiedzi. – Ruslan