2011-08-26 13 views
12

Używam doxygen do komentowania mojego kodu C. Korzystam z obcego API (tj. Nie własnego), którego dokumentacja jest skąpa, dlatego zamierzam udokumentować niektóre z tych API w moich własnych plikach źródłowych. I do mają plik nagłówkowy dla obcego API, ale nie jest praktyczne dodawanie własnych komentarzy do tego pliku.Użyj doxygen do dokumentowania elementów struktury c poza definicją struktury

Header obce

struct foreignstruct 
{ 
    int a; 
    int b; 
}; 

My Header

/** My structure comments... 
struct mystruct 
{ 
    /** Describe field here... */ 
    int field; 
}; 

/** @struct foreignstruct 
* @brief This structure blah blah blah... 
* @??? a Member 'a' contains... 
* @??? b Member 'b' contains... 
*/ 

Co tag używać zamiast @??? aby uzyskać poprawny wynik doxygen (gdzie 'poprawny' oznacza wygenerowane wyjście mystruct i foreignstruct są takie same)?

Odpowiedz

15

Może kiedyś doxygen będzie miał specjalny tag @field na to, aż do tego czasu, mogą być stosowane następujące:

/** @struct foreignstruct 
* @brief This structure blah blah blah... 
* @var foreignstruct::a 
* Member 'a' contains... 
* @var foreignstruct::b 
* Member 'b' contains... 
*/ 

Która jest notacja short-hand dla

/** @struct foreignstruct 
* @brief This structure blah blah blah... 
*/ 
/** @var foreignstruct::a 
* Member 'a' contains... 
*/ 
/** @var foreignstruct::b 
* Member 'b' contains... 
*/ 
+0

This rozwiązanie działa, jeśli 'foreignstruct' znajduje się w pliku parsowanym przez doxygen. Czy spodziewasz się, że zadziała, jeśli ten plik nie jest znany z doxygen? Widzę komunikat 'ostrzeżenie: nie znaleziono jednoznacznie pasującego elementu klasy dla foreignstruct :: a', gdy nie można znaleźć definicji foreignstruct (co jest poprawne, ponieważ nie chcę, aby doxygen analizował ten obcy nagłówek). Próbowałem wcześniej dodać ścieżkę do nagłówka ('@struct foreignstruct/full/path/to/header.h'), ale otrzymuję komunikat' warning: nazwa 'full/path/to/header.h 'podana jako argument Komenda \ class, \ struct, \ union lub \ include nie jest plikiem wejściowym. – Ben

+0

Struktura powinna być znana z doxygen. Możesz więc pozwolić, aby doxygen przeanalizował obcy nagłówek oprócz lokalnej dokumentacji lub dodaj fałszywą definicję struct z polami lokalnie (ale wtedy nie musisz używać @struct i @var). – doxygen

+0

Nie to, co miałem nadzieję, że odpowiedź będzie, ale jest to odpowiedź, której oczekiwałem. Dzięki za pomoc. – Ben

Powiązane problemy