2012-08-28 17 views
5

Bazı kodlarımı belgelemek için Doxygen kullanıyorum.Dolaşım tekrarı C++ varsayılan argümanlarla çalışır

unsigned int CountColumns(const std::string&,const std::string& delim=""); 

gibi kaynak dosyada gelen uygulanmasını: Ben başlık yani belirtilen varsayılan bir argüman kullanan bir işlev var

unsigned int CountColumns(const string& input,const string& delim) 
{ 
    ... 
} 

Şunu oluşturmak Doxygen kullandığınızda

unsigned int CountColumns (const string &input, const string &delim) 
unsigned int CountColumns (const std::string &, const std::string &delim="") 

Bu nasıl önlenebilir: varsayılan değerini içeren bir ve biri olmadan - benim dokümantasyon, CountColumns iki giriş vardır? Belgelerimi dağıtan çoklu işlev tanımları istemiyorum.

DÜZENLEME: Aşağıdaki cevabımda da belirttiğim gibi, sorun, başlık dosyasında argümanlarda 'std :: string' ifadesinin kullanılmasından kaynaklanıyor. :: string 'ifadesi ve sonra argümanlar' string 'kullanır. Kaynak dosyasında 'std :: string' işlevini kullanmak için işlev tanımını değiştirirseniz, Doxygen bunu üstbilgide bildirilenle aynı işlev olarak tanır.

+0

Uygulamayı belgelemek için doxygen kullanıyor musunuz? –

+0

Kaynak dosyaları dahil etmesini istiyorum, böylece belgelerimden html biçimindeki kaynak koduna ve diğerlerinin hangi işlevleri referans aldığına dair belgeyi doğrudan aldım. Demek istediğin bu mu? (Üzgünüm, hala oksijen seçeneklerini öğreniyorum). Yine de "INLINE_SOURCES" seçeneğinin NO olmasına karar verdim. – Wheels2050

cevap

4

Yapılandırma dosyanızdadeğerini YES olarak ayarlamanızı öneririm, bu nedenle doxx dize, std dosyasında tanımlanan bir sınıftır ad.

+0

Harika, bunun için teşekkürler - Doxyfile'da bu seçeneği görmeyi kaçırmıştım. Mükemmel çalışıyor! – Wheels2050

0

Ekstra işlevlerin belgelerin dışında bırakılmasına ne dersiniz?

bu

"Nasıl bazı kod parçası görmezden doxygen yapabilir, Doxygen FAQ uzakta?

yeni ve kolay yolu başlangıç ​​ve birinde \cond komutla bir yorum bloğu eklemektir .. göz ardı edilmelidir kod parçasının sonunda \endcond komutla açıklama bloğu Bu

elbette aynı dosya içinde olmalı Ama aynı zamanda bunun için Doxygen en önişlemci kullanabilirsiniz: Eğer

koyarsanız
#ifndef DOXYGEN_SHOULD_SKIP_THIS 

    /* code that must be skipped by Doxygen */ 

#endif /* DOXYGEN_SHOULD_SKIP_THIS */ 
around the blocks that should be hidden and put: 

    PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS 
in the config file then all blocks should be skipped by Doxygen as long as 

PREPROCESSING = YES. "

+0

Bunu yapmak için daha temiz, daha zarif bir yol olacağını düşünmüştüm. - Eğer yardımcı olabilirse, kod parçalarını elden çıkarmayı düşünmek istemiyorum. – Wheels2050

+0

orada, ön işlemcinin veya \ cond ve \ endcond komutunu kullanmanın 2 yolu var, sanırım ikinci bir – MimiEAM

2

Sorun, başlık dosyasında argümanlarda 'std :: string' ifadesi kullanıldığında, kaynak dosyada 'std :: string' ifadesinin kullanıldığı ve sonra 'dizesinin kullanıldığı bir sorun var gibi görünüyor. 'argümanlarda' kaynak dosyasında 'std :: string' işlevinin kullanılması işlev tanımını değiştirirseniz, Doxygen bunu üstbilgide bildirilenle aynı işlev olarak tanır.

İdeal olmasa da, bu bir Çalışır ve çok kasıtlı olmayan bir çözümdür.

İlgili konular