2012-08-28 21 views
5

मैं अपने कुछ कोड दस्तावेज़ करने के लिए डॉक्सीजन का उपयोग कर रहा हूं।डिफ़ॉल्ट तर्कों के साथ डॉक्सिजन दोहराए गए सी ++ फ़ंक्शंस

unsigned int CountColumns(const std::string&,const std::string& delim=""); 

और के रूप में स्रोत फ़ाइल में इसी कार्यान्वयन:: मैं एक समारोह के लिए एक डिफ़ॉल्ट तर्क का उपयोग करता है, जो शीर्ष लेख यानी में निर्दिष्ट किया जाता मिल गया है

unsigned int CountColumns(const string& input,const string& delim) 
{ 
    ... 
} 

जब मैं Doxygen का उपयोग उत्पन्न करने के लिए

unsigned int CountColumns (const string &input, const string &delim) 
unsigned int CountColumns (const std::string &, const std::string &delim="") 

यह कैसे बचा जा सकता है: डिफ़ॉल्ट मान सहित एक है, और बिना एक - मेरी प्रलेखन, CountColumns दो प्रविष्टियों है? मैं अपने दस्तावेज़ों को अपनाने के लिए कई फ़ंक्शन परिभाषा नहीं चाहता हूं।

संपादित करें: जैसा कि मैंने नीचे दिए गए मेरे उत्तर में भी उल्लेख किया है, समस्या इस तथ्य के कारण प्रतीत होती है कि हेडर फ़ाइल तर्कों में 'std :: string' का उपयोग करती है, जबकि स्रोत फ़ाइल में 'std का उपयोग करना शामिल है :: स्ट्रिंग 'कथन और फिर तर्कों में' स्ट्रिंग 'का उपयोग करता है। अगर मैं स्रोत फ़ाइल में 'std :: string' का उपयोग करने के लिए फ़ंक्शन परिभाषा को भी बदलता हूं, तो डॉक्सिजन इसे हेडर में घोषित किए गए समान कार्य के रूप में पहचानता है।

+0

क्या आप कार्यान्वयन दस्तावेज करने के लिए डॉक्सिजन चला रहे हैं? –

+0

मैं इसे स्रोत फ़ाइलों को शामिल करने के लिए कह रहा हूं ताकि मुझे अपने प्रलेखन से सीधे HTML कोड में स्रोत कोड के साथ सीधे लिंक मिले, साथ ही दस्तावेज़ जो अन्य संदर्भों को संदर्भित करता है। क्या यही मतलब है तुम्हारा? (क्षमा करें, मैं अभी भी डॉक्सिजन विकल्पों को सीख रहा हूं)। मुझे "INLINE_SOURCES" विकल्प नहीं मिला है, हालांकि। – Wheels2050

उत्तर

4

मैं आपके कॉन्फ़िगरेशन फ़ाइल में BUILTIN_STL_SUPPORTYES सेट करने का सुझाव देता हूं, इसलिए डॉक्सिजन जानता है कि स्ट्रिंग std में परिभाषित एक वर्ग है नाम स्थान।

+0

ग्रेट की तलाश में हैं, इसके लिए धन्यवाद - मुझे Doxyfile में वह विकल्प देखने से चूक गया था। अच्छी तरह से काम! – Wheels2050

0

अच्छी तरह से दस्तावेज़ों से अतिरिक्त कार्यों को छोड़ने के बारे में कैसे?

इस

Doxygen FAQ से है,

"मैं Doxygen कुछ कोड टुकड़ा उपेक्षा कर सकते हैं?

नया और आसान तरीका शुरू करने और एक पर एक \cond कमांड के साथ एक टिप्पणी ब्लॉक को जोड़ने के लिए है । कोड का टुकड़ा है कि अनदेखा किया जाना चाहिए के अंत में एक \endcond कमांड के साथ टिप्पणी ब्लॉक बेशक यह एक ही फाइल के भीतर होना चाहिए

लेकिन क्या आप भी इस बात के लिए Doxygen का पूर्वप्रक्रमक का उपयोग कर सकते हैं:। आप

डाल दिया
#ifndef DOXYGEN_SHOULD_SKIP_THIS 

    /* code that must be skipped by Doxygen */ 

#endif /* DOXYGEN_SHOULD_SKIP_THIS */ 
around the blocks that should be hidden and put: 

    PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS 
in the config file then all blocks should be skipped by Doxygen as long as 

PREPROCESSING = हाँ। "

+0

मैंने सोचा था कि ऐसा करने के लिए एक क्लीनर, अधिक सुरुचिपूर्ण तरीका होगा - हालांकि, अगर मदद की जा सकती है तो मैं मैन्युअल रूप से कोड के टुकड़े छोड़ने का प्रयास नहीं करना चाहता हूं। – Wheels2050

+0

वहाँ 2 तरीके हैं, प्रीप्रोसेसर या \ cond और \ endcond कमांड का उपयोग करते हुए, मुझे लगता है कि आप दूसरे एक – MimiEAM

2

समस्या इस तथ्य के कारण प्रतीत होती है कि हेडर फ़ाइल तर्कों में 'std :: string' का उपयोग करती है, जबकि स्रोत फ़ाइल में 'std :: string' कथन का उपयोग होता है और फिर 'स्ट्रिंग' का उपयोग करता है 'तर्कों में। अगर मैं स्रोत फ़ाइल में' std :: string 'का उपयोग करने के लिए फ़ंक्शन परिभाषा को बदलता हूं, तो डॉक्सिजन हेडर में घोषित किए गए एक ही कार्य के रूप में पहचानता है।

आदर्श नहीं है, यह एक आदर्श है समाधान जो काम करता है और बहुत कमजोर नहीं है।

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