2013-01-07 7 views
6

W jaki sposób proces budowania (kompilowania i łączenia) kodu źródłowego w D różni się od C/C++, szczególnie w odniesieniu do funkcji wbudowanych, systemu modułów D (zamiast nagłówków) i narzędzi do budowania. W jaki sposób wystąpienia instancji szablonu są ponownie używane w języku D?D Proces kompilacji

+1

Wyobrażam sobie, że instancje szablonów są ponownie używane w języku D w bardzo podobny sposób, jak szablony zewnętrzne działają w C++ 11. To wszystko, co mogę wnieść do tej dyskusji. –

+0

Wierzę w kompilację wielu plików, tworzenie instancji szablonów odbywa się tylko raz, a następnie zapisywane w jednym z wygenerowanych plików obiektów. Ale nie jestem wystarczająco pewien, aby napisać odpowiedź. Podczas kompilacji w ten sposób funkcje inline zawsze przekraczają granice modułów, tak jak gdyby w przypadku C++ wykorzystywano generowanie kodu łącza. MOIM ZDANIEM! – ponce

+0

@ponce nie ma kodu czasowego łącza gen obecnie tylko niektóre optymalizacja –

Odpowiedz

2

nie różni się tak dużo, każdy moduł zostanie skompilowany do własnego pliku OBJ, które następnie pobiera ze sobą związane, które IIRC nie różni się od C/C++ procesowego

główną różnicą jednak, że leżą w przywóz symboliczny zamiast C w całym pliku #include który eliminuje potrzebę headerfiles (choć opcja dla headerlike .di plików jest tam API źródłowych zamkniętych)

szablony rzeczywiście muszą być zawarte w plikach do dyspozycji kompilator (jak muszą być w nagłówku dla C++)