2010-12-27 16 views
16

के साथ सी ++ में मैक्रो फ़ंक्शंस दस्तावेज करना मैं डॉक्सिजन का उपयोग करके सी ++ में मैक्रो फ़ंक्शन कैसे दस्तावेज़ित करता हूं, और इसे मेरे गैर-एविल कोड के दस्तावेज़ में संदर्भित करता हूं?डॉक्सिजन

अधिक विशेष रूप से, मेरे पास संदेश में परिभाषित "संदेश" नामक कुछ नियमित कक्षा है। उपयोगकर्ता जो अपने संदेश को परिभाषित करने के लिए उत्तराधिकारी हो सकते हैं। एक और फाइल "(MessageHelpers.H") में मैं इस तरह एक पागल मैक्रो है:

//! Users must call this macro to register their messages... 
/*! 
    ...lest they be forced to type all sorts of boring and 
    error-prone boiler plate code. 
    blah blah blah... More specific documentation and explanation... 
*/ 
#define REGISTER_MESSAGE_TYPE(MSGTYPE) \ 
do_some(MSGTYPE);      \ 
seriously();       \ 
crazy_stuff(MSGTYPE);      

संदेश के लिए दस्तावेज़ में, मैं इसे प्यार करता है अगर वाक्यांश "REGISTER_MESSAGE_TYPE" स्वचालित रूप से करने के लिए एक कड़ी और बिंदु बन सकता है मेरी मैक्रो के लिए प्रलेखन। जैसे

//! A cool message class 
/*! 
    Users can inherit from this class to create their own cool messages. 
    Just be sure to call REGISTER_MESSAGE_TYPE after your class definition! 
*/ 
class Message 
{ 
    virtual void doSomeStuff(); 
}; 

क्या यह संभव है?

उत्तर

12

http://www.stack.nl/~dimitri/doxygen/manual.html

section "Special Commands" सूचियों \def command देखें, और section "Automatic link generation" वर्णन करता है कि आप मैक्रो लिंक करना चाहते हैं।

प्रलेखन से अलग मैक्रो दस्तावेज करने के लिए \def का उपयोग करें। मैक्रो परिभाषा के स्वत: लिंक के लिए #MACRO(params) का उपयोग करें।

+0

यह मेरे लिए काम नहीं करता है .. मैंने यहां उदाहरण से एबीएस मैक्रो की प्रतिलिपि बनाने की कोशिश की http://www.stack.nl/~dimitri/doxygen/autolink.html लेकिन कोई दस्तावेज उत्पन्न नहीं हुआ था, और संदर्भ मेरा कोड "# एबीएस (एक्स)" लिंक नहीं किया था। मुझे अपनी कॉन्फ़िगरेशन फ़ाइल में कुछ गलत करना होगा? – rcv

+1

मुझे नहीं पता कि यह आपका मुद्दा है, लेकिन यह सुनिश्चित करें कि आप फ़ाइल को कहीं भी मैक्रो परिभाषित करते हैं। या तो कोशिश करें! \ file */या/** @file * /, और देखें कि क्या डॉक्सिजन ने कोई चेतावनी उत्पन्न की है। स्रोत http://www.stack.nl/~dimitri/doxygen/docblocks.html "वैश्विक वस्तुओं" के लिए खोज रहा है। (संपादित करें - स्लैश स्टार वर्ण काम नहीं करते थे, लेकिन वे बहु-पंक्ति टिप्पणी मार्कर होना चाहिए) – Guerrero

+0

हाँ, मेरे पास एक/* है! @file filename.h विवरण ... */प्रत्येक फ़ाइल के शीर्ष पर .. यह दिलचस्प है कि मेरी मैक्रो परिभाषा मेरे MessageHelpers.H प्रलेखन में दिखाई नहीं दे रही है। – rcv

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