xcode - How to detect declared but undefined functions in C++? -


निम्न संकलन, लिंक और रन ठीक है (Xcode 5.1 / clang पर):

  #include & lt; iostream & gt; वर्ग C {int foo (); }; Int main (int argc, const char * argv []) {सी सी; Cout & lt; & lt; "नमस्ते दुनिया!"; }   

हालांकि, C :: foo () कहीं भी परिभाषित नहीं है, केवल घोषित मुझे किसी भी कंपाइलर या लिंकर चेतावनियां / त्रुटियां नहीं मिलीं, जाहिरा तौर पर क्योंकि सी :: एफू () कभी भी संदर्भित नहीं होता है।

क्या कोई तरीका है जो मैं एक चेतावनी का उत्सर्जन कर सकता हूं पूरे कार्यक्रम में C :: foo () के लिए कोई परिभाषा मौजूद नहीं है यद्यपि इसे घोषित किया जाता है? एक त्रुटि वास्तव में बेहतर होगी।

धन्यवाद!

अच्छे कारण हैं यह आसानी से संभव नहीं है। हेडर फाइल का एक सेट कई कार्य घोषित कर सकता है, जिनमें से कुछ अतिरिक्त पुस्तकालयों द्वारा प्रदान किए जाते हैं आप इन सभी कार्यों का उपयोग किए बिना #include ऐसे हेडर चाहते हैं (उदाहरण के लिए, यदि आप केवल कुछ #define -d निरंतर का उपयोग करना चाहते हैं)।

वैकल्पिक रूप से, हेडर फाइल द्वारा परिभाषित एपीआई का केवल एक उपशीर्षक ही कुछ हैडर लागू करना और (आपके लाइब्रेरी में) लागू करना है।

और एक C ++ या C शीर्षलेख फ़ाइल भी परिभाषित कर सकती है संभावित प्लगिन्स द्वारा परिभाषित कोड का इंटरफ़ेस, प्रोग्राम के लिए जो आमतौर पर प्लग इन के बिना चलाए जाते हैं प्लगइन्स स्वीकार करने के कई कार्यक्रम उनके हेडर फाइल में प्लग-इन इंटरफ़ेस घोषित कर रहे हैं।

यदि आप वास्तव में इस तरह की जांच करना चाहते हैं, तो शायद आप जीसीसी को अनुकूलित करने पर विचार कर सकते हैं; हालांकि, इस तरह की जाँच वर्तमान में लागू करने के लिए तुच्छ नहीं है (और आपको लिंक समय अनुकूलन की भी आवश्यकता होगी)।

Comments

Popular posts from this blog

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -

jasper reports - How to center align barcode using jasperreports and barcode4j -

django - CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False -