मैं समझता हूँ कि क्या precompiled हेडर "#include" stdafx.h "के साथ क्या कर रहे हैं और हाँ, मैं जानता हूँ कि मैं उन्हें बंद कर सकते हैं। लेकिन वह मेरे सवाल नहीं है।विज़ुअल स्टूडियो सी ++ को उन फ़ाइलों पर भी "StdAfx.h" की आवश्यकता क्यों है, जिनकी आवश्यकता नहीं है?
आप precompiled हेडर उपयोग कर रहे हैं, विजुअल C++ की आवश्यकता है प्रत्येक सीपीपी फ़ाइल को "StdAfx.h" में शामिल करें, यहां तक कि उन फ़ाइलों को जो StdAfx.h में किसी भी शीर्षलेख का उपयोग नहीं कर रहे हैं। यदि आप एक फ़ाइल पर StdAfx.h को शामिल करना भूल जाते हैं, तो यह एक त्रुटि है। लेकिन क्यों? स्पष्ट दृष्टिकोण केवल "यदि आप StdAfx.h शामिल करते हैं तो वह फ़ाइल इसका उपयोग करेगी, लेकिन यदि आप इसे शामिल करना भूल जाते हैं, तो उन शीर्षलेख फ़ाइलों को शामिल नहीं किया जाएगा।" मुझे समझ में नहीं आता कि वीसी ++ आपको क्यों चाहिए जब इसकी आवश्यकता नहीं होती है तो StdAfx.h शामिल करें। ऐसा लगता है कि उनके लिए सामान्य हेडर फ़ाइल की तरह व्यवहार करना आसान होता।
क्या कोई अच्छा कारण है कि इसकी आवश्यकता क्यों है?
प्रीकंपील्ड हेडर का पूरा बिंदु, संकलन समय को छोटा करना है। यदि कोई अतिरिक्त चेक किया जाएगा, तो यह संकलन समय में वृद्धि करेगा, जो प्रीकंपील्ड हेडर के एकमात्र लाभ को प्रस्तुत करेगा - बेकार। –
आप ऐसा क्यों कहते हैं? अतिरिक्त चेक की आवश्यकता नहीं है - वीसी ++ बस "अगर पहली पंक्ति # शामिल है" stdafx कर सकती है।एच "तो वहां उन प्रतीकों की प्रतिलिपि बनाएँ, लेकिन अन्यथा कुछ भी नहीं"। ऐसा लगता है कि माइक्रोसॉफ्ट के लिए ऐसा करना आसान होगा और उपयोगकर्ताओं के लिए भी अधिक स्पष्ट होगा। – user2543623
वास्तव में, * प्रत्येक * पर "StdAfx.h" की आवश्यकता नहीं है, वास्तव में संकलन समय में सुधार होगा, तब से उन precompiled प्रतीकों को उन .cpp फ़ाइलों पर कॉपी करने की आवश्यकता नहीं होगी जिन्हें उनकी आवश्यकता नहीं है। – user2543623