C++ xác định khái niệm "đơn vị dịch". Đơn vị dịch thuật là điểm neo nơi bản dịch bắt đầu và chương trình thường bao gồm một số đơn vị dịch như vậy. Các đơn vị nào được chuyển đến trình biên dịch là "đơn vị dịch" thực sự phụ thuộc vào các cài đặt trong IDE của bạn, trên các tệp makefiles và các cấu hình khác. Tuy nhiên, hầu hết các cấu hình chính thức đều có các tệp .cpp
và .c
- tệp của bạn dưới dạng đơn vị dịch.
Để dễ dàng hơn, chúng ta có thể nghĩ đơn vị dịch là thứ mà trình biên dịch tạo ra nhị phân và trình liên kết kết hợp một vài tệp nhị phân rồi đến chương trình.
Vì vậy, các tệp tiêu đề thường không được định cấu hình làm đơn vị dịch và chúng thường không tự tạo ra nhị phân, ngay cả khi chúng chứa mã nguồn. Họ được cho là được nhập khẩu từ các đơn vị dịch thuật và sẽ được biên soạn cùng với họ.
Nếu các tệp tiêu đề này chứa rất nhiều mã nguồn, sẽ được bao gồm trong một số đơn vị dịch, có nghĩa là (trước) biên dịch chúng một lần và giữ càng nhiều thông tin càng tốt trong kết quả trung gian biên dịch đơn vị dịch thực tế nhanh hơn. Điều này tiết kiệm thời gian, nhưng "trung gian nhị phân" là một cái gì đó nội bộ và không tiếp xúc.
Tuy nhiên, từ nội dung và loại mã nguồn trong đó, tệp tiêu đề không phân biệt được với các tệp mã nguồn khác. Bạn có thể truyền một "tệp tiêu đề" cho trình biên dịch dưới dạng đơn dịch, và trình biên dịch sẽ thực sự tạo ra một nhị phân "bình thường" ra khỏi nó. Nó thực sự chỉ là họ thường không được khai báo như là một gốc để biên dịch.
Hy vọng điều đó sẽ hữu ích.
Nguồn
2017-01-11 07:12:40
Không có điều gì như là một nhị phân không biên dịch trước, do đó, khái niệm 'nhị phân biên dịch trước' không thực sự là một điều để so sánh bất cứ điều gì khác để ở nơi đầu tiên. – EJP
cảm ơn vì đã chỉ ra ... Tôi nghĩ rằng nó nên được gọi là nguồn được biên dịch trước – bharath