2012-07-30 16 views
5

इस कोड पर विचार करें:अज्ञात कार्यों के बारे में gcc चेतावनी कैसे बनाएं?

int function() 
{ 
    int a = 1 ; 
    int b = helper(&a); 
    return b ; 
} 

int main() 
{ 
    function(); 
    return 0 ; 
} 

यह कोड स्निपेट, जीसीसी का उपयोग कर समस्या के बिना कोड आपत्ति उठाने संकलित तथ्य यह है कि समारोह 'सहायक' नामक घोषित नहीं किया गया है के बावजूद। मुझे पता है कि लिंकर को यह पकड़ना चाहिए, लेकिन मैंने अस्पष्ट bugs देखा है जो लिंकर और कंपाइलर को किसी भी त्रुटि उत्पन्न नहीं करने के बावजूद सही हेडर (फ़ंक्शन घोषणाएं शामिल करने) को हल करने के बाद हल किया गया था।

ऐसी कई जीसीसी चेतावनियां हैं जो संबंधित प्रतीत होती हैं लेकिन वास्तव में जो मैं चाहता हूं उसे प्राप्त नहीं करता हूं: -विमिंग-प्रोटोटाइप, -विग्मन-घोषणाएं और -स्ट्रिक्ट-प्रोटोटाइप। दुर्भाग्यवश, ये चेतावनियां गायब प्रोटोटाइप तक ही सीमित हैं जब वैश्विक कार्य परिभाषित है, मुझे वैश्विक कार्य संदर्भित संदर्भित प्रोटोटाइप के बारे में चेतावनियों में रूचि है।

क्या कोई विकल्प सुझा सकता है ?, धन्यवाद।

उत्तर

11

आप -Wimplicit-function-declaration चेतावनी चाहते हैं।

व्यक्तिगत रूप से, मैं -Wall -Wextra के साथ अपना कोड संकलित करना पसंद करता हूं।

+0

हां !, वह वही है जो मैं चाहता हूं :) –

+1

यह -Wall (जिसे आपको हमेशा उपयोग करना चाहिए) और -std = c99 का उपयोग करते समय सक्षम किया गया है। – ext

+0

@ext yep, यह वही है जो 'मैन जीसीसी' कहता है। –

4

-Wl,--no-undefined का उपयोग undefined function त्रुटि को सुनिश्चित करने के लिए करें।

+0

यह एक लिंकर विकल्प है? –

+0

@GearoidMurphy: हां। – Jack

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