Mamy projekt C++, który dokumentujemy za pomocą doxygen, umieszczając tylko doxygen komentarze wewnątrz nagłówków dla klas, dokumentujemy funkcje statyczne wewnątrz cpp.Posiadanie doxygena świadomego przestrzeni nazw w cpp
Nasze pliki konfiguracyjne doxygen zbierają plik nagłówka/hpp)/implementacja/cpp) wewnątrz projektu. Ponadto mamy sporo niezależnych komponentów (i zewnętrznych), które izolujemy wewnątrz przestrzeni nazw.
Projekt odbywa się w sposób, który możemy wykorzystać polimorfizm (ze względu na szerokie zastosowanie wzoru proxy)
Ponieważ jest to powszechną praktyką, my zabraniamy stosując dyrektywę wewnątrz nagłówka i używamy go w realizacji plik.
Zazwyczaj mamy w nagłówku:
/**
* @brief
* test from A
*/
void f(N1::N2::A);
/**
* @brief
* test from A
*/
void f(N1::N2::B);
Wewnątrz implementacji, mamy
using namespace N1::N2;
void f(A) { }
void f(B) { }
Uruchamiając doxygen, wydaje się mylić i generuje komunikaty o błędach:
warning: no uniquely matching class member found for f(A)
possible candidates:
void f(N1::N2::A)
void f(N1::N2::B)
Każdy pomysł, jak pozbyć się tych błędów i uczynić doxygen świadomym dyrektywy "using"?
EDIT
- bad news, wydaje się być otwarty na bug trackerze: https://bugzilla.gnome.org/show_bug.cgi?id=617285, https://bugzilla.gnome.org/show_bug.cgi?id=154880: wygląda szukam obejście zamiast czystym roztworze.
Ogólnie rzecz biorąc, jeśli chcesz wyszukać dokładną nazwę w kodzie C++, potrzebujesz pełnego przedniego końca C++. AFAICT, Doxygen ma nie ma pełnego końca C++. (Z tego powodu zawsze zastanawiałem się, jak użytkownicy C++ mogą być tak zachwyceni Doxygenem, brak czegoś lepszego?) Jeśli masz szczęście, znajdziesz obejście dla specjalnych przypadków. –
Brak lepszego, zdecydowanie, ten jest powszechnie dostępny i zajmuje się również C ... – Bruce
Powinieneś opublikować swoją poprawkę jako odpowiedź i zaakceptować ją, przynajmniej do czasu naprawienia błędu –