2009-06-10 4 views
1

ich eine CPP-Datei haben und festgestellt, dass Doxygen nicht in der Lage ist, eine Funktion zu dokumentieren, die das folgende Format enthält:Unable Dokumentation Funktionsdefinition von einigen Makro #defines gefolgt erzeugen

//! 
//! \brief Test 
//!  and perform operations on those points. 
//! 
void CTest::TestTri() 
EH_Start("CTest::TestTri") 
{ 
} 
EH_Stop 

Die EH_Start und EH_Stop sind ein Ausnahmebehandlungsmechanismus und verursacht Probleme.

Wie können wir diese ausschließen?

Antwort

4

Versuchen Sie, ein expliziter doxygen-Format - die folgenden genau sagt, doxygen welche Funktion Sie dokumentieren möchten, so dass es muss nicht verstehen, den Code herauszufinden, was in der Dokumentation befestigen:

/// \fn void CTest::TestTri() 
/// \brief Test and perform operations on those points 
EH_STart("CTest::TestTri") {} EH_Stop 
+0

Ich glaube nicht, dass die Fn-Direktive funktioniert, wenn Doxygen diese Funktion nicht zu irgendeinem Zeitpunkt in der Codebasis erfolgreich analysiert. Wie die "class" -Richtlinie soll es Ihnen ermöglichen, die Dokumentation zu verschieben. Es ist nicht vorgesehen, dass Sie ein beliebiges Funktionsdokument für nicht vorhandene Funktionen hinzufügen können. –

1

EH_Start und EH_Stop sind Unter der Annahme definiert, können Sie diese Makros erweitern haben doxgen, wenn es den Code

EXPAND_AS_DEFINED = EH_Start EH_Stop 

Wir haben eine Reihe von Makros für die Funktion und Klassendeklarationen verarbeitet. Ohne EXPAND_AS_DEFINED erzeugen Doxygen nicht die korrekte Dokumentation

Zum Beispiel:

/* C++ Code */ 
#define STANDARD_CONSTRUCTORS_HEADER(iCLASS) \ 
    public: iCLASS(); \ 
    public: virtual ~iCLASS(); \ 
    private: iCLASS(const iCLASS & iCopy); \ 
    private: iCLASS& operator=(const iCLASS &); 

class Foo { 
    STANDARD_CONSTRUCTORS_HEADER(Foo) 
} 

/* Doxyfile */ 
EXPAND_AS_DEFINED = STANDARD_CONSTRUCTORS_HEADER 

ohne EXPAND_AS_DEFINED, Sie werden die Foo Konstrukteuren in der Dokumentation nicht bekommen.