2009-08-04 25 views
96

अगर मैं अपने कोड में malloc का उपयोग करें:हर बार जब मैं मॉलोक का उपयोग करता हूं तो मुझे चेतावनी क्यों मिलती है?

int *x = malloc(sizeof(int)); 

मैं gcc से यह चेतावनी:

new.c: 7: चेतावनी: समारोह 'malloc'
new.c की अंतर्निहित घोषणा : 7: चेतावनी: बिल्ट-इन फ़ंक्शन 'malloc'

उत्तर

203

आप जोड़ने की जरूरत है। आप ऐसा नहीं करते हैं, संकलक सोचता है कि आप अपने खुद के समारोह malloc नामित परिभाषित करना चाहते हैं और यह भी चेतावनी देता है क्योंकि:

  1. आप स्पष्ट रूप से इसे नहीं घोषित करते हैं और
  2. वहां पहले से ही एक साथ बनाया गया है उस नाम से कार्य जिसमें एक अलग हस्ताक्षर है जिसे स्पष्ट रूप से घोषित किया गया था (जब कोई फ़ंक्शन पूरी तरह से घोषित किया जाता है, तो इसकी वापसी और तर्क प्रकार int माना जाता है, जो अंतर्निहित malloc के साथ संगत नहीं है, जो कि size_t लेता है और void* देता है)।
+23

+1 संदेश के वास्तविक विवरण के लिए –

+5

शब्दावली नाइट: सी मॉलोक में अंतर्निहित फ़ंक्शन जैसी कोई चीज़ नहीं है, जो मानक सी लाइब्रेरी से बस एक कार्य है। – Jens

+4

@ जेन्स मुझे मानक पुस्तकालय कार्यों को अंतर्निहित के रूप में संदर्भित करने में कोई समस्या नहीं दिखाई देती है - और न ही गलती लोगों को जाहिर है क्योंकि त्रुटि संदेश "अंतर्निर्मित" शब्द का उपयोग करता है (यही कारण है कि मैंने किया)। – sepp2k

28

आपने #include <stdlib.h> नहीं किया है। आप इस हेडर फाइल नहीं लगाते हैं तो

#include <stdlib.h> 

, समारोह संकलक करने के लिए नहीं जाना जाता है:

15

आप हेडर फाइल समारोह घोषणा करता है कि, उदाहरण के लिए शामिल करने के लिए की जरूरत है। तो यह इसे अविकसित के रूप में देखता है।

#include <stdlib.h> 

इस फ़ाइल में निर्मित समारोह malloc के लिए घोषणा में शामिल हैं:

10

सहायता में अपने कार्यों को देखने की आदत बनाते हैं।

सी के लिए सबसे अधिक सहायता यूनिक्स मैनुअल पृष्ठों पर आधारित है।

मैन मॉलोक

बहुत उपयोगी परिणाम देता है।

गुगलिंग मैन मॉलोक आपको दिखाएगा कि मेरा क्या मतलब है।

यूनिक्स में निश्चित रूप से आप संबंधित चीजों के लिए apropos भी प्राप्त करते हैं।

+1

केवल तभी यदि आप पहले ही जानते हैं कि synopsis में '# शामिल करें ' का अर्थ है कि आपको इसे अपने प्रोग्राम में लिखना है। –

+1

अगर किसी ने अन्य उत्तरों को यहां पढ़ा है तो वे अब उसे जानेंगे। – MikeKulls

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

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