2009-11-04 16 views
8

Mam wartości #define w nagłówkach, które z pewnością chcę, aby Doxygen dokumentował, ale mam inne pliki C, które traktuję jako stałe statyczne i nie chcę, aby Doxygen je dokumentował. Coś tak proste i głupie jakJak mogę zapisać doxygen dokumentację #defines w pliku C?

#define NUMBER_OF(a) (sizeof((a))/sizeof((a)[0])) 
#define MSTR(e) #e 

Jak mogę utrzymać Doxygen od wprowadzenia tych #define S w dokumentacji go tworzy? Próbowałem go oznaczyć za pomocą @internal, ale to nie pomogło.

Nieco związanych pytanie na Doxygen i #define, jak mogę dostać:

#define SOME_CONSTANT 1234 /**< An explanation */ 

umieścić "SOME_CONSTANT" i "an wyjaśnienie", ale nie "1234" na wyjściu?

Odpowiedz

2

Możesz wykluczyć jakąkolwiek część kodu z parsowania Doxygen przy pomocy tagów \cond\endcond.

EDIT: Niektóre pytania związane z:

+1

Przypuszczam, że rozwiązuje problem #define in .c (mogę otoczyć te linie kontrolką warunkową). Wydaje się jednak hałaśliwy i nienaturalny. I wcale nie zwraca ukrytych wartości dla # define'd stałych. (Może nie powinienem był zadawać złożonego pytania, ale miałem nadzieję, że było kilka rzeczy specyficznych dla zdefiniowania, które mogłyby rozwiązać oba problemy.) –

+0

Nie wiem, jak ujawnić stałą definiującą bez ujawniania jej wartości. – mouviciel

+0

Mam cond/endcond pracy, ale naprawdę chciałbym wiedzieć, dlaczego wewnętrzne nie działa. Mój doxygen fu jest zdecydowanie słaby. :-( –

0

Będzie to bez wątpienia nadal wydają głośny i nienaturalne, ale adres drugą pytanie, spróbuj:

/** An explanation */ 
#define SOME_CONSTANT /** @cond */ 1234 /** @endcond */ 
4

Możesz ustawić MAX_INITIALIZER_LINES = 0 w swoim pliku doxy, aby ukryć wartości swoich definicji.

9

Nie ma potrzeby korzystania z poleceń \cond i \endcond. Można ukryć inicjator po prostu za pomocą komendy \hideinitializer:

#define SOME_CONSTANT 1234 /**< An explanation @hideinitializer */ 

Jeśli chodzi o pierwsze pytanie, można ustawić HIDE_UNDOC_MEMBERS = YES i tylko makra posiadające blok dokumentację Doxygen zostanie pokazany na wyjściu.

1

Użytkownik chce tylko udokumentować zawartość zadeklarowaną w plikach .h. Zakładam, że deklarujesz wszystkie statyczne funkcje i zmienne jako static w swoich plikach .c. Wszystkie pozostałe są zadeklarowane również w odpowiednich plikach .h. To są twoi "publiczni" członkowie.

Co lubię robić w tym przypadku, i wierzę Doxygen był bardziej przeznaczony do stosowania w ten sposób jest:

Spowoduje to zindeksowanie tylko zawartości zawartej w plikach .h.Można jeszcze dodać katalog zawierający swoje .c pliki INPUT w swojej Doxyfile i będą skanowane w poszukiwaniu dodatkowej dokumentacji dla swoich członków „publicznych” ...

0

I rozwiązać ten problem, przenosząc moją dokumentację z pliku .c do pliku .h. Następnie uruchom doxygen tylko w pliku .h.

Następnie przedmioty, które chcę udokumentować ("przedmioty publiczne") są wewnętrznie zbierane przez doksygen.

Ponieważ wcześniej ostrożnie umieszczałem "publiczne" elementy w pliku .h i "prywatne" w pliku .c, działa to bardzo dobrze.

Technika ta przyszła mi do głowy, gdy zauważyłem, że doxygen wciąga się w załączniki. Uderzyło mnie, że gdybym również przesunął podzbiór zawiera, że ​​moduł wywołujący musiałby użyć mojego modułu, to ta lista byłaby również udokumentowana.

Ta technika ma dodatkową zaletę: mogę umieścić dokumentację w jednym oknie terminala i źródło w innym oknie terminala podczas aktualizacji dokumentacji.

Powiązane problemy