Secara umum ya, program yang menyertakan lebih banyak file header akan memerlukan lebih banyak waktu untuk dikompilasi.
Sayangnya, konten header yang telah diproses sebelumnya dapat bervariasi tergantung pada simbol makro mana yang ditentukan dan bagaimana caranya. Dan khususnya header Microsoft umumnya dirancang untuk menghasilkan hasil yang berbeda tergantung pada simbol tersebut (dalam standar C++, ini terutama hanya simbol NDEBUG
, yang mempengaruhi perluasan assert
). Oleh karena itu, kompiler bersifat konservatif dan melakukan preprocessing dan kompilasi header berulang kali untuk setiap unit terjemahan.
Salah satu teknik umum untuk menghindari hal tersebut adalah apa yang disebut header yang telah dikompilasi.
Sejauh yang saya tahu, salah satu teknik yang tidak biasa, mungkin tidak diterapkan oleh kompiler mana pun, adalah mengizinkan pemrogram mengatakan bahwa "untuk kumpulan kompilasi ini Anda dapat berasumsi bahwa semua header akan diperluas ke hal yang sama", dan bahkan mungkin memilikinya sebagai < em>default (meskipun dapat memberikan hasil yang berbeda dari standar C++ ketika asumsi tidak berlaku).
Saya lebih memilih pendekatan yang terakhir, karena pendekatan ini akan mempercepat sebagian besar pembangunan apa pun, namun header yang telah dikompilasi adalah yang kami miliki dalam praktiknya.
David Vandevoorde mengerjakan modul kuat> proposal untuk C++.
Contoh bahasa dengan modul: Modula-2, Ada, UCSD Pascal.
Sayangnya ini belum siap untuk C++11, tapi mungkin kita akan mendapatkan modulnya nanti.
person
Cheers and hth. - Alf
schedule
21.12.2013
.h
. Ini berisi definisi konstanta, kelas dan fungsi, tetapi kodenya masuk ke file.c
atau.cpp
(yang tidak dikompilasi secara otomatis) - person SJuan76   schedule 21.12.2013