c++ - precompiled header files usage for library builders -


बढ़ावा देने और एसटीएल हेडर precompiled हेडर फ़ाइल ( stdafx.h एमएसवीसी दुनिया में) इसलिए मैंने अपने डायनेमिक लिंक लाइब्रेरी प्रोजेक्ट के हेडर बदल दिए और मेरी परियोजना के stdafx.h में सभी एसटीएल / बूस्ट हेडर को स्थानांतरित कर दिया।

इससे पहले < / P>

  #include & lt; boost / smart_ptr.hpp & gt; नेमस्पेस XXX {class CLASS_DECL_BK CExampleClass // CLASS_DECL_BK सिर्फ एक मानक डीएलएल आयात / निर्यात मैक्रो है {निजी: बढ़ावा :: स्कॉपीडीपीआर & lt; प्रतिकृति & gt; m_replica; }}   

के बाद

  नामस्थान XXX {class CLASS_DECL_BK CExampleClass {निजी: बढ़ावा :: scoped_ptr & lt; प्रतिकृति & gt; m_replica; }}   

अब मेरे संकलन के घटते समय का लाभ है, लेकिन मेरे पुस्तकालय के सभी उपयोगकर्ता बिल्ड त्रुटियां बना रहे हैं (जैसे अज्ञात वृद्धि :: स्कॉपीडीपीटी .. ।) क्योंकि लापता में शामिल हैं (जो अब मेरे stdafx.h में ले जाया गया है।)


इस दुविधा का हल क्या हो सकता है?

मैं अपनी हेडर फ़ाइलों को शामिल करने के बाद संकलन समय और को कम करना चाहता हूं, डेल के किसी भी उपयोगकर्ता के लिए स्वीकार्य नहीं हैं।

क्या यह मदद कर सकता है?

  • सभी छोड़ें निर्देश के रूप में वे हैं लेकिन उन्हें 'stdafx.h' में डुप्लिकेट शामिल हैं? चूंकि stdafx.h हमेशा मेरे प्रोजेक्ट के किसी भी सीपीपी फ़ाइल में पहले शामिल है I ठीक होना चाहिए, और उपयोगकर्ताओं को कोई त्रुटि नहीं मिलेगी या यदि मैं एक अनुवाद इकाई (शीर्षलेख गार्ड्स) में मिलती है तो एक ही शीर्षलेख के कई प्रकार के गति लाभ को ढीला कर सकते हैं?

    किसी भी संकेत के लिए धन्यवाद! < P>

    जब आप हेडर को छोड़ते हैं तो आपको उसी गति में वृद्धि प्राप्त करनी चाहिए- लाइब्रेरी हेडर में जगह में शामिल है और बस इसके अतिरिक्त उन्हें stdafx.h में डाल दें।

    वैकल्पिक रूप से, आप एक अतिरिक्त परिभाषित (एक बल्क) जोड़ सकते हैं

      // stdafx.h # परिभाषित MY_LIB_STD_HEADERS_ALREADY_INCLUDED // library_file.h #ifndef MY_LIB_STD_HEADERS_ALREADY_INCLUDED # शामिल करें & lt; boost / smart_ptr.hpp & gt; ... #endif   

    लेकिन मैं केवल ऐसा करता कि यदि आप सुनिश्चित हैं यह मदद करता है बस एक स्टॉपवॉच लें और कुछ पुन: संयोजन करें। (लिंक करने की कोई ज़रूरत नहीं।) फिर आप देखेंगे कि कोई अंतर है या नहीं।

    एक तरफ <

    मुझे यकीन नहीं है कि सभी को बढ़ावा देने वाले हेडर परियोजना में कहीं की आवश्यकता होती है ऐसा एक अच्छा विचार है मैं कह सकता हूँ shared_ptr और दोस्तों, boost / foreach , शायद बूस्ट.फ़ॉर्मेट, ... एक अच्छा विचार है, लेकिन मैं बूस्ट के लिए पहले से ही दो बार सोचूंगा। RegExp हेडर नोट: मैं, लेकिन मुझे पीपी फ़ाइल के आकार और कुछ कंपाइलर हिचकी के साथ एक समस्या याद आ रही है I मैं वास्तव में।

    यह भी जांचें कि प्रश्न में बूस्ट लाइब्रेरी अग्रेषित करने वाले हेडर प्रदान करती है या नहीं कि क्या आपको उन्हें इन्हें शामिल करना चाहिए प्रीकंपंपिल्ड हैडर फाइल को नष्ट करना इसे डाउनसाइड्स कर सकती है।

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -