2015-06-20 14 views
17

के साथ काम करने के लिए फ्लाईचेक को कॉन्फ़िगर करना मुझे सी ++ 11 के लिए फ्लाईचेक कॉन्फ़िगर करने में महत्वपूर्ण समस्या हो रही है। अभी, फ्लाईचेक std::to_string() जैसी चीजों को फ़्लैग कर रहा है। मैं जिस चेकर का उपयोग कर रहा हूं वह सिर्फ जी ++ है। मैं .emacs फ़ाइल में क्या जोड़ सकता हूं जैसे कि फ्लाईचेक डिफ़ॉल्ट रूप से C++ 11 मान लेगा?सी ++ 11

उत्तर

37

फ्लाईचेक इस उद्देश्य के लिए flycheck-gcc-language-standard विकल्प प्रदान करता है। आप इसे विश्व स्तर पर स्थापित करना चाहिए नहीं है, क्योंकि वह सी फ़ाइलों की जाँच टूट जाएगा, लेकिन आप अपने init फ़ाइल में निम्न कोड के साथ c++-mode-hook से सेट कर सकते हैं:

(add-hook 'c++-mode-hook (lambda() (setq flycheck-gcc-language-standard "c++11"))) 

हालांकि, मैं इस के खिलाफ की सिफारिश करेंगे। इसके बजाय, प्रति परियोजना भाषा मानक को कॉन्फ़िगर करने के लिए Directory Variables का उपयोग करें।

C-x d के साथ डायर में अपनी परियोजना की मूल निर्देशिका खोलें, और फिर M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11" टाइप करें। यह आपकी परियोजना की मूल निर्देशिका में .dir-locals.el फ़ाइल बनाएगा। जब भी आप इस निर्देशिका या किसी उपनिर्देशिका से किसी फ़ाइल पर जाते हैं, और इस फ़ाइल के नियमों के अनुसार चर सेट करता है, तो Emacs इस फ़ाइल को पढ़ता है। विशेष रूप से, Emacs अब आपकी परियोजना में सभी C++ फ़ाइलों के लिए C++ 11 पर फ्लाईचेक सिंटैक्स जांच के लिए भाषा मानक सेट कर देगा।

+0

मैंने कोशिश की कि निर्देशिका चर के साथ और सी ++ बफर में, चर * C++ 11 * के रूप में दिखाता है। लेकिन मुझे अभी भी चेतावनी मिली है * ऑटो टाइप विनिर्देशक एक सी ++ 11 एक्सटेंशन * है। –

+0

@ एंजो ची, मेरे लिए काम करता है, शायद आपको फ़ाइल बफर को हटाने और फ़ाइल को फिर से खोलने की आवश्यकता है। –

+4

बस अगर यह कुछ लोगों के लिए काम नहीं करता है: ऐसा लगता है कि पूर्व स्थापित होने पर फ्लाई चेक जीसीसी से पहले क्लैंग का उपयोग करेगा। उस स्थिति में परिवर्तनीय फ्लाईचेक-क्लैंग-भाषा-मानक है। – dmg

4

पहले से ही बहुत अच्छे जवाब हैं। मैं बस जोड़ना चाहता हूं, कि यदि आप इसके बजाय clang का उपयोग करते हैं, तो संशोधित करने के लिए आवश्यक चर flycheck-clang-language-standard है।

+1

या अपनी परियोजना की मूल निर्देशिका में स्थित .clang_complete फ़ाइल में एक पंक्ति "-std = C++ 11" जोड़ें। – elinx