मैं सी ++ सीख रहा हूं, और अच्छा कोड लिखने की कोशिश कर रहा हूं। मैं वर्तमान संकलक झंडे के एक lof, जैसेएक अच्छी सी ++ 11 शैली को लागू करने के लिए मुझे किस ध्वज का उपयोग करना चाहिए?
-Wextra -Wall -pedantic -Werror -Wfatal-errors -Wcast-qual -Wcast-align -Wconversion -Wdouble-promotion -Wfloat-equal -Wshadow -Wpointer-arith -Weffc++ -ansi -Wstrict-aliasing
उपयोग कर रहा हूँ मैं सिर्फ सीखा है कि कीवर्ड new
और delete
अब और सी ++ 11 में नहीं किया जाना चाहिए। हालांकि, जब मैं उनका उपयोग करता हूं तो मेरे पास कोई चेतावनी नहीं होती है।
क्या कोई अच्छा सी ++ 11 शैली सुनिश्चित करने के लिए उपयोग करने के लिए कुछ झंडे हैं?
* मैंने अभी सीखा है कि सी ++ में अब और नए कीवर्ड का उपयोग नहीं किया जाना चाहिए 11. * आपने इसे कहां पढ़ा है? क्या आप वाकई इसे सही समझ गए हैं? आप कच्चे पॉइंटर्स का उपयोग करने के लिए निराश हैं जहां आपको बाद में रिसोर्स को मुक्त करने के बारे में चिंता करने की आवश्यकता होगी। आप वास्तव में 'नया' और 'हटाएं' का उपयोग करने से बच नहीं सकते हैं और ऐसा करने का कोई कारण नहीं है। आप 'std :: make_unique()' या 'std :: make_shared() 'जैसे कॉल के पीछे' new' का उपयोग करके छिपा सकते हैं, लेकिन दृश्यों के पीछे वे केवल 'नए' पर कॉल लपेटे गए हैं। – Mario
@ मारियो: आधुनिक सी ++ को वास्तव में 'डिलीट' का उपयोग करने की ज़रूरत नहीं है, कई अनुप्रयोगों को इसे सीधे कॉल करके कभी भी सर्वश्रेष्ठ सेवा नहीं दी जाएगी (और शायद ही कभी 'नया' कहा जाता है)। आपको सवाल उठाने का अधिकार है कि ओपी का मुद्दा शुद्ध सिद्धांत है, लेकिन इन दिनों आवेदन कोड में 'हटाएं' एक लाल झंडा है। हालांकि, आधुनिक सी ++ में हेडर में इतने सारे लाइब्रेरी कोड होने के साथ, यह भी तथ्य है कि 'हटाएं' कंपाइलर में तब भी दिखाई दे सकता है जब उपयोगकर्ता ने इसे लिखा नहीं है। चेतावनियों के बारे में यह मुश्किल बात है - अधिकांश कंपाइलर "आपके" कोड और "उनके" कोड के बीच भेदभाव नहीं करते हैं। –
@ मारियो बिंदु यह है कि * आपको * कभी भी उनका उपयोग नहीं करना चाहिए, कुछ लाइब्रेरी करता है। – o11c