2009-07-22 7 views
18

जब कोई सी फ़ंक्शन किसी भी तर्क को स्वीकार नहीं करता है, तो क्या इसे भाषा नियमों द्वारा "शून्य" पैरामीटर के साथ घोषित/परिभाषित किया जाना चाहिए? पीसी-एक प्रकार का वृक्ष जब तर्क-सूची में कुछ भी नहीं है सब पर समस्याओं के लिए लगता है, और अगर यह भाषा वाक्यविन्यास है कि मैं के बारे में पता नहीं है में कुछ मैं सोच रहा था।सी में: func (शून्य) बनाम func()

संपादित करें: मैं सिर्फ एक नकली पाया सवाल, C void arguments, जो और अधिक जवाब और स्पष्टीकरण है (? बैक शिकार यह पहले आया था)।

उत्तर

33

शून्य का अर्थ है कि फ़ंक्शन कोई पैरामीटर नहीं लेता है। उदाहरण के लिए,

int init (void) 
{ 
    return 1; 
} 

यह

int init() 
{ 
    return 1; 
} 

को परिभाषित क्योंकि दूसरे मामले में संकलक की जांच नहीं करेगा कि क्या वास्तव में समारोह सब पर कोई तर्क के साथ कहा जाता है के रूप में ही नहीं है, इसके बजाए, बिना किसी चेतावनी के मनमानी संख्या के साथ एक फ़ंक्शन कॉल स्वीकार किया जाएगा (यह केवल पुराने-शैली फ़ंक्शन परिभाषा वाक्यविन्यास, प्री-एएनएसआई के साथ संगतता के लिए लागू किया गया है)।

+0

धन्यवाद, रहस्य हल हो गया। – noamtm

7

सी में आईआईआरसी func (शून्य) एक ऐसा फ़ंक्शन घोषित करेगा जो कोई पैरामीटर नहीं लेता है जबकि func() एक फ़ंक्शन घोषित करता है जो किसी भी पैरामीटर को ले जाएगा। मेरा मानना ​​है कि बाद के एक विरूपण साक्ष्य पूर्व एएनएसआई सी

से आ रही Wikipedia यहाँ, घोषणा समारोह() मूल रूप से "पैरामीटर के बारे में जानकारी के बिना" समारोह की घोषणा करता है के अनुसार है।

+0

कोई फ़ंक्शन नहीं है जो func (...) के रूप में परिभाषित पैरामीटर को लेता है? – noamtm

+2

आप सही मानते हैं, के एंड आर सी पैरामीटर सूचियों में अलग-अलग (और खराब) परिभाषित किए गए थे। लेकिन सी ++ एफ() में एफ (शून्य) –

+2

@noamtm जैसा है - फॉर्म func (ए, बी, ...) का एक फ़ंक्शन; एक सी फ़ंक्शन घोषित करता है जो एक परिवर्तनीय तर्क सूची लेता है ताकि इस अर्थ में कि किसी भी पैरामीटर को भी लिया जा सके। –