2012-03-21 15 views
8

मैं किसी और द्वारा लिखित कोड के एक टुकड़े में आया था। शीर्षलेख फ़ाइलों में स्थैतिक के रूप में घोषित कई वैश्विक कार्य हैं। कार्यों को अलग-अलग कार्यान्वयन फाइलों में परिभाषित किया जाता है। AFAIK, स्थिर कार्य परिभाषा अनुवाद इकाई के बाहर दिखाई नहीं दे रही है जहां फ़ंक्शन परिभाषित किया गया है। यदि हां, तो हेडर फ़ाइलों में स्थिर फ़ंक्शंस घोषित करने का क्या मतलब है?शीर्षलेख फ़ाइलों में स्थिर वैश्विक कार्यों की घोषणा

// in some header file 
static void foo(); 


// in some implementation file 
static void foo() 
{ 
.... 
.... 
} 
+0

यह देखने योग्य है: http://stackoverflow.com/questions/92546/variable-declarations-in-header-files-static-or-not –

उत्तर

6

ठीक है, कार्यों static घोषित स्रोत फ़ाइल वे में परिभाषित कर रहे हैं में ही दिखाई देते हैं। हालांकि उन्हें एक अलग शीर्षक में घोषित एक अच्छा विचार नहीं है। मैंने भी कुछ मामलों को देखा है जहां डेवलपर्स ने ऐसा किया है। वे इसे क्रम में व्यवस्थित करने के क्रम में करते हैं ताकि वे एक समारोह को दूसरे से कॉल कर सकें। यहाँ मैं क्या मतलब है:

/* In header */ 
static void plus(int); 
static void minus(int); 
static void multiply(int); 

/* In source file */ 
static void minus(int v) 
{ 
    /* So plus can be called in minus without having to define it 
    * before minus */ 
    plus(); 
} 

static void plus(int v) { /* code */ } 

लेकिन IMHO इस यह करने के लिए एक बहुत विनाशकारी तरीका है। एक बेहतर समाधान यह है कि उन्हें लागू करने से पहले स्रोत फ़ाइल में static फ़ंक्शंस को प्रोटोटाइप करना है।

+1

सहमत हैं, यह प्रोटोटाइप कार्यों के लिए एक भयानक तरीका है। यह एक अच्छी चीज है कि उस कोड को लिखने वाले फेलो ने अब हमारे लिए काम नहीं किया है। – pic11

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