2013-02-25 14 views
8

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

+0

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. –

+1

Brak lepszego, zdecydowanie, ten jest powszechnie dostępny i zajmuje się również C ... – Bruce

+0

Powinieneś opublikować swoją poprawkę jako odpowiedź i zaakceptować ją, przynajmniej do czasu naprawienia błędu –

Odpowiedz

0

Nie znaleziono obejścia, zmieniliśmy sposób użycia pełnej przestrzeni nazw w celu dokładnego dopasowania do definicji nagłówków. Oznaczenie go jako zamknięte, moja strata :-( Zobacz komentarze/edytuj w pytaniu może pomóc czytnikowi

Powiązane problemy