2016-06-29 6 views
5

लाइब्रेरी हेडर में फ़ंक्शंस के लिए एक्सकोड की अप्रयुक्त फ़ंक्शन चेतावनी को दबाने का सही तरीका क्या है?लाइब्रेरी हेडर में इनलाइन फ़ंक्शंस के लिए एक्सकोड की अप्रयुक्त फ़ंक्शन चेतावनी को दबाने का सही तरीका

उदाहरण के लिए, मैं निम्नलिखित समारोह MathUtils.h में परिभाषित किया है:

namespace MathUtils { 
    static std::complex<double> cis(double x) { 
     return std::complex<double>(cos(x), sin(x)); 
    } 
    ... 
} 

स्रोत फ़ाइलें जो इस शीर्ष लेख शामिल हैं, लेकिन इस विशेष समारोह का उपयोग नहीं करते, चेतावनी ट्रिगर।

मैं चेतावनी को अक्षम करने के लिए फ़ंक्शन के चारों ओर एक चेतावनी प्रगति जोड़ सकता हूं, लेकिन यह सही तरीके से प्रतीत नहीं होता है - यह एक सामान्य समस्या की तरह लगता है।

+0

चेतावनी ट्रिगर होने पर कंपाइलर विकल्प क्या हैं? एक्सकोड और क्लैंग के संस्करण क्या हैं? – osgx

+0

दोनों एक्सकोड 7/8। प्रासंगिक चेतावनी अप्रयुक्त कार्य है। – Danra

+0

दानरा, सभी कमांड लाइन विकल्पों के साथ पूर्ण कंपाइलर कमांड? (पूर्ण बिल्ड लॉग देखें - "सभी ट्रांसक्रिप्ट का विस्तार करें" - http://stackoverflow.com/questions/19014359/how-do-i-view-the-full-build-log-on-xcode5 - क्लैंग के साथ कमांड होना चाहिए) – osgx

उत्तर

5

के बजाय फ़ंक्शन को static inline पर बदलना समस्या को हल करता है।

+0

मैंने अपनी स्थैतिक विधि को स्थिर इनलाइन में बदल दिया है, लेकिन मुझे अभी भी एक्सकोड 9.1 पर "अप्रयुक्त फ़ंक्शन" चेतावनी मिल रही है। –

3

यदि आप के बजाय -isystem के साथ फ़ाइल का स्थान निर्दिष्ट करते हैं, तो क्लैंग हेडर फ़ाइल में सभी चेतावनियों को चुपचाप अनदेखा कर देगा। अधिक जानकारी के लिए, http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-in-system-headers देखें।

एक्सकोड के साथ ऐसा करने के लिए, जहां तक ​​मुझे पता है कि आपको बिल्ड सेटिंग्स के 'अन्य सी ++ ध्वज' अनुभाग में उचित कंपाइलर ध्वज जोड़ना होगा।

इसके अलावा, आपको केवल चेतावनियां मिल रही हैं क्योंकि आपने static के साथ फ़ंक्शन को परिभाषित किया है - इसका मतलब है कि फ़ंक्शन को प्रत्येक अनुवाद इकाई में अलग से परिभाषित किया गया है जिसमें आप हेडर शामिल करते हैं, और किसी भी अन्य इकाइयों के लिए दृश्यमान नहीं है। आप static कीवर्ड को हटाकर त्रुटियों से छुटकारा पा सकते हैं।

+0

स्टैण्ड को हटाकर लिंकर त्रुटियों को बनाता है यदि शीर्षलेख एक से अधिक मॉड्यूल में शामिल होता है। – Danra

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