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
6
A
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++)
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. –
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
@ponce nie ma kodu czasowego łącza gen obecnie tylko niektóre optymalizacja –