कुछ वातावरणों में, संकलन सबसे तेज़ होगा यदि किसी में केवल हेडर फ़ाइलों की आवश्यकता हो। अन्य वातावरणों में, संकलन को अनुकूलित किया जाएगा यदि सभी स्रोत फ़ाइलें हेडर के समान प्राथमिक संग्रह का उपयोग कर सकती हैं (कुछ फ़ाइलों में सामान्य उपसमुच्चय से परे अतिरिक्त हेडर हो सकते हैं)। आदर्श रूप से, हेडर का निर्माण किया जाना चाहिए ताकि एकाधिक #include संचालन पर कोई प्रभाव न पड़े। फ़ाइल-से-शामिल-शामिल-गार्ड के लिए चेक के साथ #include स्टेटमेंट को घेरना अच्छा हो सकता है, हालांकि यह उस गार्ड के प्रारूप पर निर्भरता बनाता है। इसके अलावा, सिस्टम के फ़ाइल कैशिंग व्यवहार के आधार पर, एक अनावश्यक #include जिसका लक्ष्य पूरी तरह से समाप्त होने पर # ifdef'ed दूर होने में अधिक समय नहीं लग सकता है।
विचार करने के लिए एक और बात यह है कि यदि कोई फ़ंक्शन एक पॉइंटर को एक संरचना में ले जाता है, तो कोई प्रोटोटाइप को लिख सकता है
शून्य फू (संरचना BAR_s * बार);
बिना BAR_s की परिभाषा के दायरे में होना। अनावश्यक से बचने के लिए एक बहुत ही आसान तरीका शामिल है।
PS - मेरी कई परियोजनाओं में, एक फाइल होगी, जिसमें यह उम्मीद की जाती है कि हर मॉड्यूल #include होगा, जिसमें पूर्णांक आकार और कुछ सामान्य संरचनाओं और यूनियनों के लिए टाइप-सीफ़ जैसी चीज़ें शामिल होंगी [जैसे
टंकण संघ
अहस्ताक्षरित लंबे एल;
अहस्ताक्षरित लघु lw [2];
अहस्ताक्षरित चार lb [4];
} U_QUAD;
(हां, मुझे पता है कि अगर मैं एक बड़े-एंडियन आर्किटेक्चर में चला गया, तो मैं परेशानी में पड़ जाऊंगा, लेकिन चूंकि मेरे कंपाइलर यूनियनों में अनाम संरचना की अनुमति नहीं देते हैं, इसलिए यूनियन के भीतर बाइट्स के लिए नामांकित पहचानकर्ताओं का उपयोग करने की आवश्यकता होगी क्योंकि उन्हें एक्सेस किया जाना चाहिए। TheUnion.b.b1 आदि जो बल्कि कष्टप्रद लगता है।