दिलचस्प पोस्ट
क्या गंज 2 टेम्पलेट इंजन के साथ कोणीय का उपयोग करना संभव है? HTML5 लोकल स्टोरेज बनाम सत्र का भंडारण पायथन में कंसोल आउटपुट को बदलें मैं ASP.NET MVC 2 के लिए एक कस्टम सदस्यता प्रदाता कैसे बना सकता हूं? सी ++ सदस्य प्रारंभिक सूची पायथन कई तारों की जगह लेता है "अर्रेएडप्टर को संसाधन आईडी को एक टेक्स्टव्यू होना चाहिए" XML समस्याएं सॉकेट '/var/lib/mysql/mysql.sock' के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं किया जा सकता है (2) डबल क्वेरी के बिना MySQL पृष्ठ पर अंक लगाना? आईडी के लिए एंड्रॉइड फ्रेगमेंट कोई दृश्य नहीं मिला? jQuery.वही – जब सभी डिफरेड अब 'अनसुलझे' (या तो हल हो या अस्वीकार किए गए) के लिए कॉलबैक हैं? jQuery – आग घटना अगर सीएसएस वर्ग बदल गया है एक एकल कार्रवाई के साथ कई फाइलें डाउनलोड करें पीजीजी छवि को एसवीजी में बदलने के लिए कैसे? Boost_mutex बढ़ाने के लिए उदाहरण (एकाधिक पढ़ता / एक लिखना)?

चेतावनी: समारोह का अंतर्निहित घोषणा

मेरे कंपाइलर (जीसीसी) मुझे चेतावनी दे रहे हैं:

चेतावनी: समारोह का अंतर्निहित घोषणा

कृपया यह समझने में मेरी मदद करें कि यह क्यों आ रहा है।

वेब के समाधान से एकत्रित समाधान "चेतावनी: समारोह का अंतर्निहित घोषणा"

आप ऐसे फ़ंक्शन का उपयोग कर रहे हैं जिसके लिए कंपाइलर ने एक घोषणा (" प्रोटोटाइप ") नहीं देखी है।

उदाहरण के लिए:

int main() { fun(2, "21"); /* The compiler has not seen the declaration. */ return 0; } int fun(int x, char *p) { /* ... */ } 

आपको मुख्य से पहले अपने फ़ंक्शन को घोषित करने की आवश्यकता है, इस तरह से, सीधे या शीर्षक में:

 int fun(int x, char *p); 

सही तरीके से हेडर में फ़ंक्शन प्रोटोटाइप घोषित करना है।

उदाहरण

main.h

 #ifndef MAIN_H #define MAIN_H int some_main(const char *name); #endif 

main.c

 #include "main.h" int main() { some_main("Hello, World\n"); } int some_main(const char *name) { printf("%s", name); } 

एक फ़ाइल के साथ वैकल्पिक (मुख्य.c)

 static int some_main(const char *name); int some_main(const char *name) { // do something } 

जब आप अपना #include करें main.c में, फ़ाइल के #include संदर्भ को इसमें शामिल करें जिसमें सूची के शीर्ष पर संदर्भित फ़ंक्शन होता है। जैसे कि यह मुख्य सी है और आपका संदर्भित कार्य "SSD1306_LCD.h" में है

 #include "SSD1306_LCD.h" #include "system.h" #include <stdio.h> #include <stdlib.h> #include <xc.h> #include <string.h> #include <math.h> #include <libpic30.h> // http://microchip.wikidot.com/faq:74 #include <stdint.h> #include <stdbool.h> #include "GenericTypeDefs.h" // This has the 'BYTE' type definition 

उपर्युक्त "फ़ंक्शन की अंतर्निहित घोषणा" त्रुटि उत्पन्न नहीं करेगा, लेकिन नीचे-

 #include "system.h" #include <stdio.h> #include <stdlib.h> #include <xc.h> #include <string.h> #include <math.h> #include <libpic30.h> // http://microchip.wikidot.com/faq:74 #include <stdint.h> #include <stdbool.h> #include "GenericTypeDefs.h" // This has the 'BYTE' type definition #include "SSD1306_LCD.h" 

वास्तव में वही # शामिल सूची, सिर्फ अलग आदेश

खैर, यह मेरे लिए किया था

यदि आपके पास सही शीर्षक परिभाषित है और गैर GlibC लाइब्रेरी (जैसे मस्ल सी ) gcc उपयोग कर रहे हैं, तो error: implicit declaration of function भी फेंक देगा error: implicit declaration of function जब GNU एक्सटेंशन जैसे कि malloc_trim का सामना करना पड़ता है।

समाधान एक्सटेंशन और शीर्षलेख लपेट करना है :

 #if defined (__GLIBC__) malloc_trim(0); #endif 

जब आपको error: implicit declaration of function मिलती है error: implicit declaration of function यह भी अपमानजनक फ़ंक्शन को सूचीबद्ध करना चाहिए। अक्सर यह त्रुटि किसी भूल या अनुपलब्ध हेडर फ़ाइल के कारण होती है, इसलिए शेल प्रांप्ट पर आप man 2 functionname टाइप कर सकते हैं और शीर्ष पर SYNOPSIS अनुभाग को देख सकते हैं, क्योंकि यह अनुभाग उन शीर्ष लेख फ़ाइलों को सूचीबद्ध करेगा, जिन्हें शामिल करने की आवश्यकता है। या http://linux.die.net/man/ का प्रयास करें यह ऑनलाइन मैन पेज हैं जो वे हाइपरलिंक और खोजना आसान हैं। कार्यों को अक्सर हेडर फाइलों में परिभाषित किया जाता है, जिसमें किसी भी आवश्यक हेडर फाइलें अक्सर उत्तर होती हैं। सीक्यूचर की तरह,

आप ऐसे फ़ंक्शन का उपयोग कर रहे हैं जिसके लिए कंपाइलर ने एक घोषणा ("प्रोटोटाइप") नहीं देखी है।

मुझे लगता है कि प्रश्न 100% उत्तर नहीं दिया गया है मैं लापता टाइपफ () के साथ मुद्दे के लिए खोज रहा था, जो समय निर्देश को संकलित करता है।

निम्नलिखित लिंक स्थिति पर प्रकाश चमक जाएगा:

https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Typeof.html

https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Alternate-Keywords.html#Alternate-Keywords

के रूप में conculsion __typeof__() का उपयोग करने की कोशिश बजाय। gcc ... -Dtypeof=__typeof__ ... भी gcc ... -Dtypeof=__typeof__ ... मदद कर सकता है।

यह तब भी हो सकता है जब आप शीर्ष लेख फ़ाइल को शामिल करना भूल जाते हैं। उदाहरण के लिए यदि आप string.h को बिना स्ट्रेल () का उपयोग करने का प्रयास कर रहे हैं तो आपको यह त्रुटि मिलेगी