2011-05-25 13 views
9

क्यूटी के साथ सी ++ में प्रोग्रामिंग करते समय मुझे क्या करना चाहिए? बस 2क्यूटी क्या शीर्षलेख शामिल करने के लिए?

#include <QtCore> 
#include <QtGui> 

या

#include <QWidget> 
#include <QDialog> 
#include <QList> 
#include <QKeyEvent> 
#include <QObject> 
हर वर्ग के लिए

शामिल?

धन्यवाद!

#include <QtCore> 
#include <QtGui> 

और किसी अन्य क्यूटी घटक आप

#include <QtNetwork> 

आदि

उपयोग करने की आवश्यकता:

+0

थोड़ा असंबद्ध लेकिन यह आपके लिए रूचि का हो सकता है: http://code.google.com/p/include-what-you-use/ –

उत्तर

9

केवल अपनी आवश्यक कक्षाओं की परिभाषाओं को शामिल करें - कुछ भी सिर्फ आलसी नहीं है, यह बेहद अपर्याप्त है और मेरे दिमाग में खराब शैली है।

क्यूटीगुई (जिसमें स्वयं क्यूटीकोर शामिल है) शामिल है, आपके संकलन में लगभग 350 (!) हेडर फाइलें जोड़ना होगा, जब आपके उदाहरण में आपको केवल 6 की आवश्यकता होगी। संकलन में अधिक समय लगेगा, और जब कोई आपके ऐप को बनाए रखने की कोशिश करता है और आपकी फाइलों को ब्राउज़ कर रहा है, वे केवल यह शामिल करने में सक्षम नहीं होंगे कि प्रत्येक फ़ाइल/कक्षा क्या करने की कोशिश कर रही है - उन्हें एक विचार प्राप्त करने के लिए पूरे स्रोत को पढ़ना होगा।

+3

सब सच! एक अन्य विचार, अपनी शीर्षलेख फ़ाइलों में जहां संभव हो आगे की घोषणाओं का उपयोग करें। –

+3

यह उत्तर गलत है (आंशिक रूप से सही) क्योंकि यह "precompiled शीर्षलेख" सुविधा को ध्यान में रखता है, जो पेशेवरों में विपक्ष को बदलता है। मैं कहता हूं कि यदि आप केवल सामान्य क्यूटी का उपयोग करते हैं, और इसमें कोई अलग शामिल नहीं है, तो आपको सभ्य संकलन गति और सबसे छोटा बाइनरी आकार मिलेगा। यह माना जा रहा है कि आपके पास कारणों पर ऑप्टिमाइज़ेशन के साथ आधुनिक कंपाइलर है। हैंड-पिकिंग में 90-एस सामान शामिल है। स्पष्ट सामान की मशीन की देखभाल करने दें, यह मनुष्य से बेहतर है। –

+0

@ बाराफूअल्बिनो प्रीकंपिल्ड हेडर एक प्रोजेक्ट विकसित करते समय अच्छे होते हैं, लेकिन यदि उपयोगकर्ता है, उदाहरण के लिए, ओपन-सोर्स सॉफ़्टवेयर का निर्माण करने के बाद, इसे बनाने के लिए सभी शीर्षकों को किसी भी तरह संकलित करने की आवश्यकता होगी। हैंड-पिकिंग में "90 की सामग्री" शामिल नहीं है।सी ++ फ़ाइल में अपनी निर्भरताओं को स्पष्ट रूप से घोषित करना सामान्य बात है। – SirDarius

2

आप प्रत्येक व्यक्ति के वर्ग सहित परेशान करने के लिए नहीं करना चाहते हैं तो पूरे घटक शामिल यदि आप अपनी निर्भरताओं को स्पष्ट रूप से निर्दिष्ट करना चाहते हैं तो प्रत्येक व्यक्तिगत वर्ग

शामिल करें

और अन्य QT कक्षाएं जिनका आप उपयोग कर रहे हैं।

5

बस संकलन को तेज करने के लिए अपनी कक्षाओं में आपको जो चाहिए वह शामिल करें। यदि आप आलसी लोगों में से एक हैं और इससे कोई फर्क नहीं पड़ता कि संकलन करने में कितना समय लगता है, तो अधिक सामान्य हेडर चुनें और यदि आप ऑप्टिमाइज़ेशन की तलाश में हैं तो उन्हें टालें (कंपाइलर/लिंकर अप्रयुक्त सामान को हटा देगा, लेकिन यह अभी भी है पहले इसे शामिल करने के लिए बेहतर)।

सामान्य रूप से मुझे केवल नई चीजें शामिल हैं यदि मुझे कुछ ऐसी चीज चाहिए जो अभी भी गायब है (यानी अभी तक शामिल नहीं है)। तो, बस संकलन मारा। अगर यह कुछ भूल गया है जिसे आप भूल गए हैं, तो हेडर जोड़ें। यदि आपको वह दृष्टिकोण पसंद नहीं है, तो आपके द्वारा उल्लिखित जेनेरिक हेडर का उपयोग करें।

0

एकमात्र अंतर संकलन समय में है। यदि आप precompile QtGui और QtCore हेडर का उपयोग नहीं करते हैं, तो संकलन समय बहुत अधिक भुगतना होगा, और आपको इससे बचने की कोशिश करनी चाहिए।

संबंधित मुद्दे

 संबंधित मुद्दे