使用文件或类来记录doxygen中的类?

时间:2011-02-09 15:22:56

标签: c++ doxygen

这肯定是一个菜鸟问题,但我在Doxygen文档中找不到答案。我不确定是否使用:

@file

@class

记录我的头文件时。

原因是如果我放置文件,那么所有注释只出现在“文件”选项卡中,而不是出现在“类”选项卡中(每个)。

对于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所包围的任何东西似乎都不太喜欢......

1 个答案:

答案 0 :(得分:1)

我通常不使用,除非我想指定备用包含路径或类似的东西。通常它看起来像这样:

/// Tunables loader.
/** This class contains a set of functions for loading tunables from
 * file. Usually you only need one QuaTunablesLoader object in your
 * program. Once its work is done, you can safely destroy it.
 * 
 * ... blah, blah, blah ...
 * */
class QuaTunablesLoader {

这实际上相当于使用@class,所以你的问题的答案是肯定的,你应该在记录类时使用@class。如果您的头文件不包含任何其他内容,您可能根本不应该记录它,因为文档只会说“此文件包含SomeClass类的声明”。如果文件包含更多内容,例如友元函数,则应该记录文件(显然,使用@file),可能提供对类的引用。