मूल प्रश्न का उत्तर यह है कि न तो/वाईसी या/यू सेट के साथ फ़ाइल में #pragma hdrstop होने का उद्देश्य यह है कि इसे अनदेखा किया जाता है और इसलिए आप एक बिल्ड कॉन्फ़िगरेशन सेट अप कर सकते हैं जो प्रीकंपिल्ड हेडर और अन्य के बिना बनाता है विन्यास कि precompiled हेडर के साथ निर्माण का निर्माण और आप कोड या हेडर है कि सभी में शामिल किए गए हैं ऐसा करने के लिए बदलने की जरूरत नहीं है।
अधिक जानकारी ...
एमएसडीएन पर नोट्स का कहना है कि "एचडीआरस्टॉप प्राग्मा आपको प्रीकंपिलेशन फ़ाइल नामों और उस स्थान पर अतिरिक्त नियंत्रण देता है जिस पर संकलन स्थिति सहेजी जाती है।" जो सच है, लेकिन यह विशेष रूप से स्पष्ट नहीं है कि यह कितना उपयोगी हो सकता है ...
संक्षेप में।
- #pragma hdrstop को उस स्रोत फ़ाइल में डालकर जो/YC या/Y के साथ संकलित नहीं है, बिल्कुल कोई प्रभाव नहीं पड़ता है।
- यदि आपके पास फ़ाइल के लिए/yu सेट है तो hdrstop संकलक को उस पंक्ति से पहले सब कुछ फेंकने के लिए कहता है जिस पर hdrstop प्रकट होता है और इसके बजाय precompiled शीर्षलेख डालें।
- यदि/yc फ़ाइल के लिए सेट है तो hdrstop का मतलब है कि सभी संकलित स्थिति को उस पंक्ति तक ऊपर से बचाएं जिस पर hdrstop precompiled शीर्षलेख के रूप में प्रकट होता है।
चाल वैकल्पिक हेडर फ़ाइल नाम के बिना/वाईसी और/यू का उपयोग कर रही है; बस 'उपयोग' या 'बनाएं' रेडियो बटन की जांच करें और 'हेडर के माध्यम से' संपादित करें बॉक्स को खाली करें (या प्रोजेक्ट फ़ाइल संपादित करें ...)।
तो तुम 1 फ़ाइल, संभवतः PrecompiledHeader.cpp कहा जाता है जो शीर्ष लेख है कि आप precompiled शीर्ष लेख में शामिल करना चाहते हैं और जो फ़ाइलों में शामिल हैं की सूची के अंत में hdrstop #pragma है शामिल है। यह एक फ़ाइल/वाईसी के साथ संकलित है।
आपके पास आपके प्रीकंपील्ड हेडर में मौजूद फ़ाइलों को शामिल करने के बाद #pragma hdrstop के साथ आपकी सभी अन्य सीपीपी फ़ाइलें हैं। इन फ़ाइलों को सभी/यू के साथ संकलित कर रहे हैं।
इसके परिणामस्वरूप प्रीकंपिल्टेड हैडर सीपीपी आपके (इस उदाहरण में) एकल पीएच फ़ाइल और उस एकल पीएचसी फ़ाइल का उपयोग कर अन्य सभी फाइलों का निर्माण करता है।
ऐसा करने में लाभ यह है कि आपकी फ़ाइलों में से कोई भी 'ग्लोबल' प्रीकंपील्ड हेडर बिल्डिंग हेडर फ़ाइल शामिल करने की आवश्यकता नहीं है - इसलिए कोई stdafx.h या जो कुछ भी नहीं है। इसका मतलब यह है कि आप एक बिल्ड कॉन्फ़िगरेशन सेट अप कर सकते हैं जो प्रीकंपिल्ड हेडर के बिना बनाता है जहां सभी #pragma hdrstop लाइनों को आसानी से अनदेखा कर दिया जाता है।
यह "अच्छा" है क्योंकि इसका मतलब है कि आपके पास एक 'नो प्रीकंप' बिल्ड कॉन्फ़िगरेशन हो सकता है जो आपको जल्दी से विकसित करने देता है (आप एक ही शीर्षलेख बदल सकते हैं और दुनिया को पुनर्निर्माण के लिए मजबूर नहीं कर सकते) और अन्य "सामान्य" कॉन्फ़िगरेशन कि precompiled हेडर का उपयोग करें।
स्रोत
2013-07-04 12:44:14
धन्यवाद। आपका बहुत बहुत धन्यवाद! ... अब, हम्म ... * "फिर आपके पास अपने सभी अन्य सीपीपी फाइलें हैं जिनमें # प्रीग्म्प्लेड हेडर में मौजूद फ़ाइलों को शामिल करने के बाद #pragma hdrstop है।" * - क्या इसका मतलब यह है कि अन्य फाइलों को यह जानने की ज़रूरत है कि इसमें क्या है प्रीकंपिल्ड हेडर ताकि वे एचडीआरस्टॉप लाइन के पहले और बाद में अपने विभाजन को विभाजित कर सकें? –
यदि आप करते हैं तो यह बेहतर काम करता है। लेकिन आपको नहीं करना है। यदि आपके पास #pragma hdrstop से ऊपर की एक फ़ाइल है जो आपके प्रीकंपील्ड हेडर में नहीं है, तो आपको अपने प्रीकंप में बिल्ड त्रुटियां मिलेंगी। फिर आप तय कर सकते हैं कि क्या यह प्रीकंप में होने के लिए व्यापक रूप से पर्याप्त रूप से उपयोग किया जाता है या नहीं। –