अंतर्निहित कार्य 'मॉलोक' की असंगत निहित घोषणा


155

मुझे यह त्रुटि मिल रही है:

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

मैं यह करने की कोशिश कर रहा हूँ:

fileinfo_list* tempList = malloc(sizeof(fileinfo_list));

केवल संदर्भ के लिए हाथ में प्रयुक्त संरचना है:

typedef struct {
    fileinfo** filedata;
    size_t nFiles;
    size_t size;
    size_t fileblock;
} fileinfo_list;

मैंने जो कुछ भी किया है, उसमें मुझे कुछ भी गलत नहीं दिख रहा है। मैं सिर्फ tempList1 एक्स के आकार के साथ बना रहा हूं fileinfo_list


जवाबों:


340

आप संभवतः शामिल करना भूल गए <stdlib.h>


1
आह धन्यवाद :) अभी भी C का हैंग हो रहा है, java से आने वाला पहला C प्रोग्राम :)
SGE

<stdlib.h>चेतावनी में शामिल होने के बाद एक त्रुटि हुईerror: conflicting types for 'malloc'
क्रिस्टोस करापापास

46

आपको करने की आवश्यकता है #include <stdlib.h>। अन्यथा यह परिभाषित है int malloc()जो अंतर्निहित प्रकार के साथ असंगत है void *malloc(size_t)


जब इसे परिभाषित किया जाता है int malloc(), क्या यह दोहराता है void *malloc(size_t)?
user1343318

@ user1343318 जरूरी नहीं है, जो चेतावनी के लिए ठीक कारण है। Ex: 64-बिट डेटा पॉइंटर्स और 32-बिट intवैल्यू वाले एक x64 प्लेटफॉर्म पर बकरी का मल होगा, जबकि x86 32bit-data-pointer / 32bit- intसही ढंग से काम कर सकता है। न तो सही हैं, जैसा कि न तो मामले में संकलक को पता है कि mallocवास्तव में क्या रिटर्न है, और intप्रतिक्रिया में मानता है।
व्हेजक्राइग


4

Stdlib.h फ़ाइल में मैलोडोक, कॉलोक, रियललॉक और फ्री फ़ंक्शंस की हेडर जानकारी या प्रोटोटाइप शामिल हैं।

तो एएनएसआई सी में इस चेतावनी से बचने के लिए, आपको stdlib हेडर फ़ाइल को शामिल करना चाहिए।


-4

इस तरह की चेतावनियों का एकमात्र समाधान कार्यक्रम में stdlib.h को शामिल करना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.