Это, конечно, нубский вопрос, но я не могу найти ответ в документации Doxygen. Я не уверен, что использую:
@файл
or
@сорт
при документировании моих заголовочных файлов.
Причина в том, что если я помещаю файл, то все комментарии появляются только на вкладке «Файлы», а не на вкладке «Классы» (по каждому).
Для cpp это нормально, я просто использую файл и это хорошо, но если я использую и файл, и класс в заголовке (файл в начале и класс прямо перед началом объявления класса), то я получаю дублированные записи для класса в сгенерированная документация...
Что я делаю неправильно? Какие-либо предложения? Идеи?
С уважением, Алекс
Изменить: теперь я столкнулся с новой проблемой. Чтобы избежать циклических зависимостей, я дважды объявляю свой класс в заголовочном файле (вероятно, это не лучший способ избежать циклических зависимостей, но обычно он работает для меня), например:
#ifndef EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DECL
#define EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DECL
namespace eu_sofia_kpi_common
{
class KPI_CPP_API AbstractThread;
}
#define EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DECL_END
#endif EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DECL
#ifdef EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DECL_END
#ifndef EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DEF
#define EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DEF
namespace eu_sofia_kpi_common
{
class KPI_CPP_API AbstractThread
{
public:
AbstractThread();
virtual ~AbstractThread();
///start method, derived classes must implement this method to initialize their boost::shared_ptr<boost::thread> pointer member object
virtual int start() = 0;
//stop method
virtual void stop() = 0;
protected:
///Pointer to a boost thread to be inherited and that children classes must use in the implementation of the start and stop methods
boost::shared_ptr<boost::thread> m_thread;
};
}
#endif EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DEF
#endif EU_SOFIA_KPI_COMMON_ABSTRACTTHREAD_DECL_END
Как видите, у меня есть предварительное объявление, предшествующее моему «настоящему» объявлению. Теперь, если я использую @class, Doxygen жалуется на проблемы несоответствия, связанные с этим классом, хотя он генерирует документацию для класса. Я предполагаю, что все, что окружено #ifdef или #ifndef Doxygen, похоже, не очень нравится...
@class
. Вы документируете файл? Если это так, вам следует использовать докситег@file
. - person James McNellis   schedule 09.02.2011