2013-01-07 38 views
6

Quá trình xây dựng (biên dịch và liên kết) mã nguồn trong D khác với C/C++ như thế nào liên quan đến các hàm nội tuyến, hệ thống mô-đun D (thay vì tiêu đề) và công cụ xây dựng. Làm thế nào là instantiations mẫu tái sử dụng trong D?D Quá trình xây dựng

+1

Tôi sẽ tưởng tượng rằng các mẫu instantiations được tái sử dụng trong D trong rất nhiều giống như cách extern mẫu làm việc trong C++ 11. Đó là tất cả những gì tôi có thể đóng góp cho cuộc thảo luận này. –

+0

Tôi tin rằng trong một tập hợp nhiều tập tin, mẫu instantiation được thực hiện chỉ một lần sau đó được lưu trữ trong một trong các tập tin đối tượng được tạo ra. Nhưng tôi không chắc đủ để viết một câu trả lời. Khi biên dịch theo cách này, các hàm nội tuyến luôn luôn vượt qua các ranh giới mô-đun, giống như chúng nếu tạo mã liên kết thời gian được sử dụng trong C++. IMHO! – ponce

+0

@ponce không có gen mã thời gian liên kết hiện chỉ có một số tối ưu hóa –

Trả lời

2

nó không khác nhau nhiều, mỗi mô-đun được biên dịch sang file obj riêng của mình mà sau đó được liên kết với nhau mà IIRC là không khác so với C/C++ quá trình

sự khác biệt chính tuy nhiên nằm ở chỗ các nhập khẩu là biểu tượng thay vì C của toàn bộ tập tin #include mà loại bỏ sự cần thiết phải headerfiles (mặc dù các tùy chọn cho headerlike file .di là có cho API nguồn đóng)

các mẫu thực sự cần phải được bao gồm trong các tập tin có sẵn cho trình biên dịch mặc dù (như họ cần phải ở trong tiêu đề cho C++)

Các vấn đề liên quan