Di beberapa lingkungan, kompilasi akan menjadi tercepat jika seseorang hanya menyertakan file header yang dibutuhkan. Di lingkungan lain, kompilasi akan dioptimalkan jika semua file sumber dapat menggunakan kumpulan header utama yang sama (beberapa file mungkin memiliki header tambahan di luar subset umum). Idealnya, tajuk harus dibuat sehingga beberapa operasi #include tidak akan berpengaruh. Mungkin bagus untuk mengapit pernyataan #include dengan pemeriksaan file-to-be-Included's include-guard, meskipun hal itu menciptakan ketergantungan pada format penjaga itu. Lebih lanjut, bergantung pada perilaku cache file sistem, #include yang tidak perlu yang targetnya # ifdef'ed seluruhnya mungkin tidak butuh waktu lama.
Hal lain yang perlu dipertimbangkan adalah jika suatu fungsi membawa pointer ke struct, seseorang dapat menulis prototipe sebagai
void foo (struct BAR_s * bar);
tanpa definisi untuk BAR_s harus berada dalam cakupan. Pendekatan yang sangat berguna untuk menghindari penyertaan yang tidak perlu.
PS - di banyak proyek saya, akan ada file yang diharapkan setiap modul akan #include, berisi hal-hal seperti typedefs untuk ukuran integer dan beberapa struktur dan kesatuan umum [mis.
serikat typedef {
l panjang tak bertanda tangan;
unsigned short lw [2];
unsigned char lb [4];
} U_QUAD;
(Ya, saya tahu saya akan mendapat masalah jika saya pindah ke arsitektur big-endian, tetapi karena kompiler saya tidak mengizinkan struct anonim dalam serikat, menggunakan pengidentifikasi bernama untuk byte dalam serikat akan mengharuskan mereka diakses sebagai theUnion.b.b1 dll. yang tampaknya agak mengganggu.